window.open打开页面窗口大小调整及置于页面最前面

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

相关文章
相关标签/搜索