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 相关文章推荐
javascript之解决IE下不渲染的bug
Jun 29 Javascript
ajax异步刷新实现更新数据库
Dec 03 Javascript
JS实现简易图片轮播效果的方法
Mar 25 Javascript
javascript实现全角半角检测的方法
Jul 23 Javascript
jQuery基本过滤选择器用法示例
Sep 09 Javascript
原生js仿jquery实现对Ajax的封装
Oct 04 Javascript
jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
Mar 23 jQuery
基于JSON数据格式详解
Aug 31 Javascript
react native 获取地理位置的方法示例
Aug 28 Javascript
Vue实现星级评价效果实例详解
Dec 30 Javascript
微信小程序实现可长按移动控件
Nov 01 Javascript
解决nuxt 自定义全局方法,全局属性,全局变量的问题
Nov 05 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
PHP函数in_array()使用详解
2014/08/20 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
关于PHP文件的自动运行方法分析
2016/05/13 PHP
详解PHP安装mysql.so扩展的方法
2016/12/31 PHP
JQuery困惑—包装集 DOM节点
2009/10/16 Javascript
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
2015/08/28 Javascript
Angular ng-class详解及实例代码
2016/09/19 Javascript
javascript容错处理代码(屏蔽js错误)
2017/01/20 Javascript
EsLint入门学习教程
2017/02/17 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
2017/06/30 Javascript
基于jQuery Easyui实现登陆框界面
2017/07/10 jQuery
原生JS+Canvas实现五子棋游戏
2020/05/28 Javascript
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
Element Input组件分析小结
2018/10/11 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
react项目从新建到部署的实现示例
2021/02/19 Javascript
haskell实现多线程服务器实例代码
2013/11/26 Python
Python实现文件按照日期命名的方法
2015/07/09 Python
简单介绍Python的Django框架加载模版的方式
2015/07/20 Python
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
Python用threading实现多线程详解
2017/02/03 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
解决tensorflow训练时内存持续增加并占满的问题
2020/01/19 Python
Python web如何在IIS发布应用过程解析
2020/05/27 Python
前处理班长职位说明书
2014/03/01 职场文书
施工工地安全标语
2014/06/07 职场文书
自强自立美德少年事迹材料
2014/08/16 职场文书
2014年安全生产工作总结
2014/11/13 职场文书
2015元旦主持词开场白和结束语
2014/12/14 职场文书
初中生物教学反思
2016/02/20 职场文书
2016年中学法制宣传日活动总结
2016/04/01 职场文书
简单实现一个手持弹幕功能+文字抖动特效
2021/03/31 HTML / CSS
Django一小时写出账号密码管理系统
2021/04/29 Python