寫這篇文章並不是要告訴垃圾廣告商可以盡情彈出廣告或者後台隱藏彈出窗口,而是提醒大家IE內核還有一些冬冬可以繞過大多數以IE為內核的浏覽器的廣告屏蔽功能,甚至繞開這些浏覽器本身,直接彈出一個真正的Internet Explorer窗口。當然並不是全部,有的還是做的比較好的,如Maxthon,盡管新窗口打開了,但是仍然存在於Maxthon之中,而不會砰地彈出一個IE在後台放著,但是TT、The World等一些浏覽器就不行了,能直接打開為新的IE窗口。自古都是一物降一物,希望能有相應的解決辦法。
原理很簡單。大多數浏覽器的彈出式廣告屏蔽功能執行的是屏蔽window.open這個函數。當然,還有少數工具和軟件可以屏蔽showModalDialog和showModalessDialog這兩個函數,而showModal類函數只要能運行便能打開一個模態窗口。而IE是完全封裝了這個函數,所以在showModal類函數中運行window.open()是無法屏蔽的。
所以知道這個原理便可以自己寫幾個javascript便能使用。
1.用showModalDialog打開一個指定頁面
2.指定頁面內不需要有內容,只需要執行一個window.open()便能新打開開你窗口
3.打開這個窗口後在模態窗口中將其關閉(window.close())
這樣可以通過模態窗口間接地打開你要打開的窗口了。
相關代碼:
主頁面內代碼:
<script language=javascript>
//打開模態窗口
function showDialog(dialogUrl){
var sUrl = dialogUrl;
var sFeathers = "help:off;resizable:off;scroll:no;status:off";
//sUrl = sUrl
window.showModalDialog(sUrl,"",sFeathers);
}
//打開指定網址
function openUrl(sUrl){
//模態窗口文件地址
var dialogUrl = "txdialog.htm";
//加上隨機參數,強制刷新,這裡可以不要
dialogUrl += "?r=" + Math.random()*100000;
dialogUrl += "&url=" + sUrl;
showDialog(dialogUrl);
}
</script>
測試代碼
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>請輸入要打開窗口的網址:
<input type="text" name="txtUrl" id="txtUrl" value="http://senyx.cnblogs.com">
<input type=button value='test'>
</body>
</html>
在模態窗口所在頁面(txdialog.htm)內放如下代碼:
<script language=javascript>
function Request(strName)
{
var strHref = location.href;
var intPos = strHref.indexOf("?");
var strRight = strHref.substr(intPos + 1);
var arrTmp = strRight.split("&");
for(var i = 0; i < arrTmp.length; i++)
{
var arrTemp = arrTmp[i].split("=");
if(arrTemp[0].toUpperCase() == strName.toUpperCase()) return arrTemp[1];
}
return "";
}
var sUrl = Request("url");
//alert(sUrl);
window.open(sUrl);
window.close();
</script>
例子下載:
http://www