寫這篇文章並不是要告訴垃圾廣告商可以盡情彈出廣告或後台隱藏彈出窗口,而是提醒大家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 onclick="openUrl(txtUrl.value)" 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://fanrsh.cnblogs.com/articles/280189.html