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

相關文章
相關標籤/搜索