最近公司项目,客户要求兼容 ie9,我他妈。。。滚回去老老实实搬砖,主要是集成高拍仪,之前是用websocket 做的,支持ie和谷歌,但是偏偏ie9 不支持 websocket ,你说气人不,好了废话说了一堆,直接上吧
-1. 以 script 形式 引入 js 包含 事件一并引入,将com组件js axCam_Ocx.js放在项目 public 下,
js 里面的 event MessageCallback(type,str) 当时试了几十次,在vue写 event事件,但是参数总是无法获取,最后,幸亏能原生的把 js和事件一并引进来,万幸啊
2.axCam_Ocx.js 内容
if(type==0){
//视频开始显示
}else if(type==1){
//拍照的路径
window.InfoTextCallback(0,str);
}else if(type==4){
//摄像头数量变化时
// var camNum = parseInt(str);
// GetDevCount(camNum);
InfoTextCallback(26,str);
}else if(type==2){
//ShowInfo("智能连拍数量 = "+str+"\r\n");
}else if(type==3){
// ShowInfo("定时连拍数量 = "+str+"\r\n");
}else if(type==5){
//图片保存失败
InfoTextCallback(8,str);
}else if(type==6){
var strsMessage= new Array();
strsMessage = str.split("**");
for(var i=0;i<strsMessage.length-1 ;i++){
var num = 9+i;
InfoTextCallback(9+i,strsMessage[i]);
}
var picBase64 = axCam_Ocx.GetICPicture();
InfoTextCallback(19,picBase64);
}else if(type==7){
//未发现身份证模块
InfoCallback(0x1e);
}else if(type==8){
//base64
InfoTextCallback(5,str);
}else if(type==9){
LoadOver();
}else if(type==10){
//base64
InfoTextCallback(24,str);
}else if(type==11){
var value = parseInt(str);
if(value==0){
InfoCallback(0x33);
}else if(value==1){
InfoCallback(0x29);
}
}else if(type==12){
//base64
InfoCallback(0x35);
}else if(type==13){
//base64
InfoTextCallback(28,str);
}else if(type==14){
//base64
InfoCallback(0xbb);
}else if(type==15){
var value = parseInt(str);
if(value==1){
InfoCallback(0x50);
}else InfoCallback(0x51);
}else if(type==16){
InfoCallback(0x52);
}else if(type==17){
InfoCallback(0x53);
}else if(type==18){
var value = parseInt(str);
if(value!=0){
//InfoCallback(0x54);
InfoTextCallback(37,value);
}else InfoCallback(0x55);
}else if(type==19){
InfoTextCallback(28,str);
axCam_Ocx2.FaceDoubleOK();
}
- 上面 axCam_Ocx.js 里面的 InfoTextCallback()InfoCallback()方法 都是 vue里面的方法,
所以需要将 vue里面对应的方法映射成 window 方法即可,js里面就可以调到,下面是将我 vue里面的三个方法映射成window方法,那个js 方法里的window 可写可不写。
mounted(){
window.InfoTextCallback = this.InfoTextCallback
window.InfoCallback = this.InfoCallback
window.LoadOver = this.LoadOver
},
- 4.还有一点,如果引入的com组件 代码在本地测试是ok的,但是部署到服务器就出问题,那一定的 ie浏览器的问题,打开 ie internet 选项,点击安全 重新配置里面的 自定义级别 ,什么跨域 启用 筛选禁用等等