1.window.open打开页面参数说明:javascript
2.调整弹窗位于页面中间,并按比例打开弹窗,强制位于页面最前面html
//name 弹窗名字 //width 弹窗宽度(比例) //height 弹窗高度(比例) var myWindow; function openWin(url, name, width, height) { var w_percent = width ? width : 9;//若是参数未传,则取9 var h_percent = height ? height : 8; var widths = (window.screen.availWidth) * w_percent / 10; var heights = (window.screen.availHeight) * h_percent / 10; var iLeft = (window.screen.availWidth - widths) / 2; var iTop = (window.screen.availHeight - heights) / 2; //判断是否为IE var b_version=navigator.appVersion; var version=b_version.split(";"); if(version[1]){ var trim_Version=version[1].replace(/[ ]/g,""); } if(trim_Version == 'MSIE9.0' || trim_Version == 'MSIE10.0'|| trim_Version == 'WOW64' || trim_Version == 'MSIE7.0'){//IE浏览器,直接打开 myWindow = window.open(url, name, 'scrollbars=yes,width=' + widths + ',height=' + heights + ',left=' + iLeft + ',top=' + iTop + ''); myWindow.focus(); }else{//非IE,判断窗口是否存在,若存在,则关闭当前窗口,从新打开 if(myWindow){ myWindow.close(); myWindow = null; } myWindow = window.open(url, name, 'scrollbars=yes,width=' + widths + ',height=' + heights + ',left=' + iLeft + ',top=' + iTop + ''); } //弹窗名字重命名ss var title = name; setTimeout(function () { myWindow.document.title = title; }, 1000); }
<a href="javascript:void(0)" onclick="javascript:openWin('url','name','8.5','7.5')">name</a>
代码说明:java
(1)通常window.open方法打开弹窗,火狐下弹窗没法自动显示到页面最前面,用myWindow.focus()方法,可强制新开页面置于页面最前方。浏览器
(2)360极速模式下,此方法仍不能解决将页面置于最前方的问题,故加判断,若是页面已经打开,则将此页面关闭,参数置为空,从新打开此页面。即:if(myWindow){ myWindow.close() ; myWindow = null ;} myWindow = myWindow.open(url,name,....);app
(3)用这种方式解决了360极速模式出现的问题,360兼容模式即ie下,又会出现第二次打开弹窗,弹窗被浏览器屏蔽的问题,因此,我选择判断浏览器模式,处理此兼容问题,即若是当前浏览器是IE,则直接打开页面,不须要判断myWindow是否存在的状况。url
综上所述,就解决了用window.open打开窗口强制位于最前遇到的兼容问题。code