Vue框架下引入ActiveX控件的问题解决


Posted in Javascript onMarch 25, 2019

最近参与了山东某一公司的呼叫中心系统的开发项目,我负责的模块是在公司已有的前端Vue框架下集成他们的软电话条功能。从开始到结束所遇到的几个问题如下:

1.如何将ActiveX控件引入Vue,并且在页面上成功渲染;

2.如何调用ActiveX已提供的方法;

3.如何监听ActiveX的动作;

(注:以上问题在html的文件里不存在)

我们先来看下第一个问题:如何将ActiveX控件引入Vue,并且在页面上成功渲染。如何将ActiveX控件渲染到页面上。根据客户开发人员提供的demo,`<object id="" classid=""></object>`拷贝到vue文件中,如图所示

Vue框架下引入ActiveX控件的问题解决

yarn run dev,运行成功,但是页面空出很大一块空白区域,很显然,没有渲染成功。经过查询,ActiveX控件只支持在IE浏览器下使用(有点坑)

这算是解决了第一个问题,同样,小伙伴可以通过动态生成的方式渲染到页面上,代码如下:

let obj = document.createElement('object')
obj.setAttribute('id', 'activex')
obj.setAttribute('classid', 'clsid:{控件id}')
obj.setAttribute('width', 1500)
obj.setAttribute('height', 100)
var _obj = document.getElementById("要渲染的节点");
_obj.appendChild(obj)

接下来我们来看第二个问题:如何调用ActiveX已提供的方法。

渲染是可以了,但是却无法调用控件提供的方法。根据demo:`softphonecontrol.MakeCall(paramsItem)`,无法执行,后来又采取嵌入iframe方式(还记得刚刚说的吗,这个控件在单纯的html页面没有任何问题,当然前提是IE浏览器)。最终找到原因,IE的浏览器需要做下设置设置:设置-Internet选项-安全/自定义级别-Active控件和插件-对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本,选择"启用"或者"提示")

最后一个问题啦:如何监听ActiveX的动作。

根据demo:

<script  for= "softphonecontrol"  event= "OnLogRingUp(param1,param2)"  language= "javascript"> 
 alert("param1:"+param1+" "+"param2:"+param2); 
</script>

再次提醒一下,这种写法也只有IE支持,谷歌支持一些简单的window.reload、onclick之类的方法,<script></script>中间的alert就是监听后续需要做的事情。我将这段代码直接拷贝到vue文件里:

Vue框架下引入ActiveX控件的问题解决

哈哈,成功编译,但是无法监听到。换个思路,动态渲染到根节点呢,像上面提到的:

initRingUpSript:function(){
    var ring = document.createElement("script");
    ring.setAttribute("for","softphonecontrol");
    ring.event="OnLogRingUp(Call_ID,CORP_CODE)"; 
    ring.appendChild(document.createTextNode("phoneListener.ringUp(Call_ID,CORP_CODE)"))
    document.body.appendChild(ring)
   },

值得注意的是:此方法会将<script>function</script>渲染到页面上,但是想执行Vue的methods的方法的话,还需要在mounted里加上一句代码: window.phoneListener = this;

这段代码的作用是将Vue的this所指向赋值给全局的变量phoneListener,这个变量,可随意。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery验证工具类搜集整理
Jan 16 Javascript
jQuery 隐藏和显示 input 默认值示例
Jun 03 Javascript
js实现键盘控制DIV移动的方法
Jan 10 Javascript
详解JavaScript操作HTML DOM的基本方式
Oct 21 Javascript
jQuery链式操作实例分析
Nov 16 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
Jan 12 Javascript
详解AngularJS 模态对话框
Apr 07 Javascript
浅谈JavaScript的push(),pop(),concat()方法
Jun 03 Javascript
关于动态执行代码(js的Eval)实例详解
Aug 15 Javascript
Vue.js学习之过滤器详解
Jan 22 Javascript
原生JS实现层叠轮播图
May 17 Javascript
Javascript原生ajax请求代码实例
Feb 20 Javascript
9102了,你还不会移动端真机调试吗
Mar 25 #Javascript
详解原生JS回到顶部
Mar 25 #Javascript
javascript验证form表单数据的案例详解
Mar 25 #Javascript
elementUI select组件默认选中效果实现的方法
Mar 25 #Javascript
详解javascript函数写法大全
Mar 25 #Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
Mar 25 #Javascript
Node.js之readline模块的使用详解
Mar 25 #Javascript
You might like
中英文字符串翻转函数
2008/12/09 PHP
PHP查询快递信息的方法
2015/03/07 PHP
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
火狐textarea输入法的bug的触发及解决
2013/07/24 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
2013/11/26 Javascript
javascript中parentNode,childNodes,children的应用详解
2013/12/17 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
2014/03/03 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
Vue.js第三天学习笔记(计算属性computed)
2016/12/01 Javascript
Bootstrap CSS布局之代码
2016/12/17 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
2017/09/12 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
iview tabs 顶部导航栏和模块切换栏的示例代码
2019/03/04 Javascript
详解JSON和JSONP劫持以及解决方法
2019/03/08 Javascript
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
浅谈如何优雅处理JavaScript异步错误
2019/11/12 Javascript
Element Breadcrumb 面包屑的使用方法
2020/07/26 Javascript
玩转python爬虫之URLError异常处理
2016/02/17 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
2018/06/22 Python
python安装pil库方法及代码
2019/06/25 Python
python list转置和前后反转的例子
2019/08/26 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
解决json中ensure_ascii=False的问题
2020/04/03 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
推荐10个HTML5响应式框架
2016/02/25 HTML / CSS
给定一个时间点,希望得到其他时间点
2013/11/07 面试题
新郎婚宴答谢词
2014/01/19 职场文书
2015年房地产销售工作总结
2015/04/20 职场文书
北京青年观后感
2015/06/15 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书
Vue+TypeScript中处理computed方式
2022/04/02 Vue.js