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 相关文章推荐
显示、隐藏密码
Jul 01 Javascript
通过Javascript将数据导出到外部Excel文档的函数代码
Jun 15 Javascript
JavaScript函数详解
Nov 17 Javascript
Js 正则表达式知识汇总
Dec 02 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
Jan 07 Javascript
window.open()实现post传递参数
Mar 12 Javascript
Javascript技术栈中的四种依赖注入详解
Feb 23 Javascript
jQuery过滤特殊字符及JS字符串转为数字
May 26 Javascript
详解JS去重及字符串奇数位小写转大写
Dec 29 Javascript
js+css实现打字效果
Jun 24 Javascript
vue 微信授权登录解决方案
Apr 10 Javascript
js实现时分秒倒计时
Dec 03 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 编程安全性小结
2010/01/08 PHP
深入理解PHP原理之Session Gc的一个小概率Notice
2011/04/12 PHP
php中数字0和空值的区别分析
2014/06/05 PHP
Zend Framework入门教程之Zend_Mail用法示例
2016/12/08 PHP
PHP中define() 与 const定义常量的区别详解
2019/06/25 PHP
How to Auto Include a Javascript File
2007/02/02 Javascript
JavaScript 图片预览效果 推荐
2009/12/22 Javascript
HTML5之lang属性与dir属性的详解
2013/06/19 Javascript
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
简单谈谈node.js 版本控制 nvm和 n
2015/10/15 Javascript
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
JS实现在文本指定位置插入内容的简单示例
2017/12/22 Javascript
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
2017/12/28 Javascript
vue 插值 v-once,v-text, v-html详解
2018/01/19 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
element实现合并单元格通用方法
2019/11/13 Javascript
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
python基础入门学习笔记(Python环境搭建)
2016/01/13 Python
python如何获取服务器硬件信息
2017/05/11 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
python使用循环打印所有三位数水仙花数的实例
2018/11/13 Python
解决Python一行输出不显示的问题
2018/12/03 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
Grid 宫格常用布局的实现
2020/01/10 HTML / CSS
美国帽子俱乐部商店:Hat Club
2019/07/05 全球购物
Tessabit美国:集世界奢侈品和设计师品牌的意大利精品买手店
2020/06/29 全球购物
大学生个人事迹材料
2014/01/21 职场文书
婚庆公司的创业计划书
2014/01/22 职场文书
幼儿园教师培训方案
2014/02/04 职场文书
转让协议书范本
2014/04/15 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python
quickjs 封装 JavaScript 沙箱详情
2021/11/02 Javascript