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+ajax实现顶一下,踩一下效果
Jul 17 Javascript
Jquery 点击按钮显示和隐藏层的代码
Jul 25 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
Sep 02 Javascript
构造函数+原型模式构造js自定义对象(最通用)
May 12 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
May 31 Javascript
jQuery网页定位导航特效实现方法
Dec 19 Javascript
vue的过滤器filter实例详解
Sep 17 Javascript
Vue入门之数量加减运算操作示例
Dec 11 Javascript
ElementUI 修改默认样式的几种办法(小结)
Jul 29 Javascript
vue axios封装httpjs,接口公用配置拦截操作
Aug 11 Javascript
我所理解的JavaScript中的this指向
Sep 04 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
Dec 10 Vue.js
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
网页游戏开发入门教程三(简单程序应用)
2009/11/02 PHP
php实现读取手机客户端浏览器的类
2015/01/09 PHP
CodeIgniter扩展核心类实例详解
2016/01/20 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
2019/02/25 PHP
[IE&amp;FireFox兼容]JS对select操作
2007/01/07 Javascript
javascript下查找父节点的简单方法
2007/08/13 Javascript
javascript 鼠标滚轮事件
2009/04/09 Javascript
javascript针对DOM的应用分析(四)
2012/04/15 Javascript
Javascript delete 引用类型对象
2013/11/01 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
Bootstrap Table使用方法解析
2016/10/19 Javascript
原生js图片轮播效果实现代码
2016/10/19 Javascript
JS获取input[file]的值并显示在页面的实现方法
2018/03/09 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
2018/12/20 Javascript
400多行Python代码实现了一个FTP服务器
2012/05/10 Python
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
Python分析学校四六级过关情况
2017/11/22 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
2018/06/13 Python
python中协程实现TCP连接的实例分析
2018/10/14 Python
PyQt5实现简单数据标注工具
2019/03/18 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
2020/01/10 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
基于python代码批量处理图片resize
2020/06/04 Python
用python绘制樱花树
2020/10/09 Python
爱游人:Travelliker
2017/09/05 全球购物
JSF如何进行表格处理及取值
2012/08/06 面试题
C#笔试题和英文面试题
2013/02/07 面试题
益达广告词
2014/03/14 职场文书
理财学专业自荐书
2014/06/28 职场文书
2014年业务员工作总结范文
2014/11/17 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
微信小程序基础教程之echart的使用
2021/06/01 Javascript
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫
js 实现Material UI点击涟漪效果示例
2022/09/23 Javascript