首先由南昌網(wǎng)絡公司工程師介紹關于屏蔽彈出窗口的原因,曾經(jīng)有一段時間,廣告商在網(wǎng)上使用彈出窗口達到了肆無忌憚的程度。他們經(jīng)常把彈出窗口打扮成系統(tǒng)對話框的模樣,引誘用戶去點擊其中的廣告。由于看起來像是系統(tǒng)對話框,一般用戶很難分辨是真是假。為了解決這個問題,有些瀏覽器開始在彈出窗口配置方面增加限制。
Windows XP SP2中的IE 6對彈出窗口施加了多方面的安全限制,包括不允許在屏幕之外創(chuàng)建彈出窗口、不允許將彈出窗口移動到屏幕以外、不允許關閉狀態(tài)欄等。IE 7則增加了更多的安全限制,如不允許關閉地址欄、默認情況下不允許移動彈出窗口或調整其大小。Firefox 1從一開始就不支持修改狀態(tài)欄,因此無論給window.open()傳人什么樣的特性字符串,彈出窗口中都會無一例外地顯示狀態(tài)欄。后來的Firefox 3又強制始終在彈出窗口中顯示地址欄。Opera只會在主瀏覽器窗口中打開彈出窗口,但不允許它們出現(xiàn)在可能與系統(tǒng)對話框混淆的地方。
此外,有的瀏覽器只根據(jù)用戶操作來創(chuàng)建彈出窗口。這樣一來,在頁面尚未加載完成時調用window.open()的語句根本不會執(zhí)行,而且還可能會將錯誤消息顯示給用戶。換句話說,只能通過單擊或者擊鍵來打開彈出窗口。
對于那些不是用戶有意打開的彈出窗口,Chrome采取了不同的處理方式。它不會像其他瀏覽器那樣簡單地屏蔽這些彈出窗口,而是只顯示它們的標題欄,并把它們放在瀏覽器窗口的右下角。
在打開計算機硬盤中的網(wǎng)頁時,IE會解除對彈出窗口的某些限制。但是在服務器上執(zhí)行這些代碼會受到對彈出窗口的限制。
彈出窗口屏蔽程序
大多數(shù)瀏覽器都內置有彈出窗口屏蔽程序,而沒有內置此類程序的瀏覽器,南昌網(wǎng)站設計公司技術員認為,也可以安裝Yahoo!Toolbar等帶有內置屏蔽程序的實用工具。結果就是用戶可以將絕大多數(shù)不想看到彈出窗口屏蔽掉。于是,在彈出窗口被屏蔽時,就應該考慮兩種可能性。如果是瀏覽器內置的屏蔽程序阻止的彈出窗口,
那么window.open()很可能會返回null。此時,只要檢測這個返回的值就可以確定彈出窗口是否被屏蔽了,如下面的例子所示:
var jxbhWin=window. open("http://syshcw.cn","_blank");
if(jxbhWin==null)(
alert("The popup was blocked!");
)
如果是瀏覽器擴展或其他程序阻止的彈出窗口,那么window.open()通常會拋出一個錯誤。因此,要想準確地檢測出彈出窗口是否被屏蔽,必須在檢測返回值的同時,將對window.open()的調用封裝在一個try-catch塊中,如下所示:
var jxbhWin=window. open("http://syshcw.cn","_blank");
if (jxbhWin==null)(
在任何情況下,以上代碼都可以檢測出調用window.open()打開的彈出窗口是不是被屏蔽了。但要注意的是,檢測彈出窗口是否被屏蔽只是一方面,它并不會阻止瀏覽器顯示與被屏蔽的彈出窗口有關的消息。
本文僅限內部技術人員學習交流,不得作于其他商業(yè)用途.文章出自:南昌網(wǎng)站建設公司-百恒網(wǎng)絡 http://syshcw.cn 如轉載請注明出處!