兼容window.showModalDialog

今日遇到老项目为ie项目,使用了谷歌放弃了的window.showModalDialog 弹窗传递参数,谷歌一直报错所以想了个法子通过阻塞来实现.

1.先需要一个判断浏览器的函数



//判断是否是IE浏览器
function myBrowser () {
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isOpera = userAgent.indexOf(“Opera”) > -1; //判断是否Opera浏览器
var isIE = userAgent.indexOf(“compatible”) > -1
&& userAgent.indexOf(“MSIE”) > -1 && !isOpera; //判断是否IE浏览器
var isEdge = userAgent.indexOf(“Edge”) > -1; //判断是否IE的Edge浏览器
var isFF = userAgent.indexOf(“Firefox”) > -1; //判断是否Firefox浏览器
var isSafari = userAgent.indexOf(“Safari”) > -1
&& userAgent.indexOf(“Chrome”) == -1; //判断是否Safari浏览器
var isChrome = userAgent.indexOf(“Chrome”) > -1
&& userAgent.indexOf(“Safari”) > -1; //判断Chrome浏览器
if (isIE) {
var reIE = new RegExp(“MSIE (\d+\.\d+);”);
reIE.test(userAgent);
var fIEVersion = parseFloat(RegExp[“$1”]);
if (fIEVersion == 7) {
return “IE7”;
} else if (fIEVersion == 8) {
return “IE8”;
} else if (fIEVersion == 9) {
return “IE9”;
} else if (fIEVersion == 10) {
return “IE10”;
} else if (fIEVersion == 11) {
return “IE11”;
} else {
return “0”;
}//IE版本过低
return “IE”;
}else
if (isOpera) {
return “Opera”;
} else
if (isEdge) {
return “Edge”;
} else
if (isFF) {
return “FF”;
} else
if (isSafari) {
return “Safari”;
} else
if (isChrome) {
return “Chrome”;
}else{
return “IE”;
}
}

2.需要用到阻塞函数

暂停函数



function Pause(obj,iMinSecond){
if (window.eventList==null) window.eventList=new Array();
var ind=-1;
for (var i=0;i<window.eventList.length;i++){
if (window.eventList[i]==null) {
window.eventList[i]=obj;
ind=i;
break;
}
}
if (ind==-1){
ind=window.eventList.length;
window.eventList[ind]=obj;
}
setTimeout(“GoOn(“ + ind + “)”,iMinSecond);
}



该函数把要暂停的函数放到数组window.eventList里,同时通过setTimeout来调用继续函数。
继续函数如下:
function GoOn(ind){
var obj=window.eventList[ind];
window.eventList[ind]=null;
if (obj.NextStep) obj.NextStep();
else obj();
}


3.通过判断myBrowser().indexOf(“IE”)>-1 来判断浏览器是否IE,如果不是则进行阻塞,直到 window.returnValue 返回值

此处的openDIVModule() 为通过layer封装open方法,可自行搜索.



var url = “”;
window.userSelectWin = openDIVModule(url, 800, 565, true, “选择”);
str = window.returnValue;
var timer = setInterval(function(){
str = window.returnValue;
if(!str){
Pause(this,500);//调用暂停函数
}else{
window.returnValue=null;//清空返回值
clearInterval(timer);
}
}, 500);
this.NextStep=function(){
//得到返回值之后的操作
}


 上一篇
java网络爬虫学习(1) java网络爬虫学习(1)
话不多说直接开始! 1.得到html创建项目就不说了,我这里使用的是IDEA加MAVEN.先构建demo1.java 创建第一个方法 public void show(){ //创建客户端 CloseableH
2019-02-15
下一篇 
Hello World Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hex
2019-02-12 今何在
  目录