JS關閉當前窗口window.close()方法

過去,當直接調用window對象的close()方法,而不是對window實例調用close()時,瀏覽器會關閉最前面的窗口,不管腳本是否創建了該窗口。現在,出於安全原因,不再允許腳本關閉未打開的窗口。(Firefox46.0.1:腳本無法關閉尚未打開的窗口)

1.直接調用window對象的close()方法

window.close()

當直接調用window.close()方法時,IE會彈出提示框,詢問是否關閉此窗口。
在這裏插入圖片描述
Firefox則不會關閉頁面
Google則會立即關閉當前頁面。

2.window實例調用close()方法

針對IE,去除提示框需要創建一個window實例,先打開該窗口,就可以直接關閉。

window.opener = null;
window.open('', '_self');
window.close();

針對FireFox,之所以window.close在firefox不能使用,是因爲firefox默認不能關閉用戶打開的網頁。
利用在當前窗口中打開一個新窗口來替換當前打開的頁面,然後關閉該窗口。其中window.open(‘about:blank’,’_self’)返回的是當前窗口的引用。

var opened=window.open('about:blank','_self');   
opened.opener=null;
opened.close();

如果要關閉的頁面有父頁面,可以使用下面的方法

window.open('','_parent','');
window.close();

3.兼容寫法:

if(firefox) {
   var opened=window.open('about:blank','_self');   
   opened.opener=null;
   opened.close();
} else {  
   window.opener = null;
   window.open('', '_self');
   window.close();
}

最直接的辦法是在FireFox瀏覽器中輸入about:config,然後找到dom.allow_scripts_to_close_windows項,把false設爲true,這樣window.close()就可以使用了,FireFox默認狀態window.close是無效的。但需要客戶去設置,肯定不是開發者想要的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章