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 相关文章推荐
用AJAX返回HTML片段中的JavaScript脚本
Jan 04 Javascript
使用js声明数组,对象在jsp页面中(获得ajax得到json数据)
Nov 05 Javascript
jquery slibings选取同级其他元素的实现代码
Nov 15 Javascript
js只执行1次的函数示例
Jul 20 Javascript
vue.js学习之递归组件
Dec 13 Javascript
详解Vue 事件驱动和依赖追踪
Apr 22 Javascript
微信小程序 本地图片按照屏幕尺寸处理
Aug 04 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
Sep 28 Javascript
详解javascript replace高级用法
Feb 17 Javascript
Vue-resource安装过程及使用方法解析
Jul 21 Javascript
vue路由结构可设一层方便动态添加路由操作
Aug 31 Javascript
JavaScript Dom实现轮播图原理和实例
Feb 19 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
phpinfo 系统查看参数函数代码
2009/06/05 PHP
php读取富文本的时p标签会出现红线是怎么回事
2014/05/13 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
PHP如何搭建百度Ueditor富文本编辑器
2018/09/21 PHP
javascript开发技术大全 第4章 直接量与字符集
2011/07/03 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
jquery如何实现锚点链接之间的平滑滚动
2013/12/02 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
JavaScript 数组中最大最小值
2016/06/05 Javascript
jquery点击切换背景色的简单实例
2016/08/25 Javascript
jQuery删除当前节点元素
2016/12/07 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
vue 解决addRoutes动态添加路由后刷新失效问题
2018/07/02 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
js实现贪吃蛇小游戏
2019/10/29 Javascript
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
[01:02:32]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第二场 2月26日
2021/03/11 DOTA
pycharm 使用心得(二)设置字体大小
2014/06/05 Python
Python 实现随机数详解及实例代码
2017/04/15 Python
Python+matplotlib+numpy绘制精美的条形统计图
2018/01/02 Python
python3学习之Splash的安装与实例教程
2018/07/09 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
2018/09/02 Python
在python里创建一个任务(Task)实例
2020/04/25 Python
Python基于BeautifulSoup爬取京东商品信息
2020/06/01 Python
keras在构建LSTM模型时对变长序列的处理操作
2020/06/29 Python
Python用户自定义异常的实现
2020/12/25 Python
简单介绍CSS3中Media Query的使用
2015/07/07 HTML / CSS
深深扎根运动世界的生活品牌:Tillys
2017/10/30 全球购物
模具设计与制造专业应届生求职信
2013/10/18 职场文书
会计毕业生自我鉴定
2013/11/04 职场文书
拖鞋店创业计划书
2014/01/15 职场文书
运动会方队口号
2014/06/07 职场文书
团队会宣传标语
2014/10/09 职场文书
公司宣传语大全
2015/07/13 职场文书
php访问对象中的成员的实例方法
2021/11/17 PHP
Python如何用re模块实现简易tokenizer
2022/05/02 Python