(代码已经更新,注意不能在本地浏览,受IE的安全限制,需要放在Web服务器中运行)
写这篇文章并不是要告诉垃圾广告商可以尽情弹出广告或者后台隐藏弹出窗口,而是提醒大家IE内核还有一些冬冬可以绕过大多数以IE为内核的浏览器的广告屏蔽功能,甚至绕开这些浏览器本身,直接弹出一个真正的Internet Explorer窗口。当然并不是全部,有的还是做的比较好的,而不会砰地弹出一个IE在后台放着,但是TT,Maxthon等一些浏览器就不行了,能直接打开为新的IE窗口。Google工具条版本不同效果不同,但是有一个共同点就是它们是通过判断(window.open字符串,包括showModalDialog、showModalessDialog也是,而通过eval便可以饶过:))(老版本的Google也是,新版本解决了)。自古都是一物降一物,希望能有相应的解决办法。
原理很简单。大多数浏览器的弹出式广告屏蔽功能执行的是屏蔽window.open这个函数。当然,还有少数工具和软件可以屏蔽showModalDialog和showModalessDialog这两个函数,而showModal类函数只要能运行便能打开一个模态窗口。而IE是完全封装了这个函数,所以在showModal类函数中运行window.open()是无法屏蔽的。
所以知道这个原理便可以自己写几个javascript便能使用。
1.用showModalDialog打开一个指定页面
2.指定页面内不需要有内容,只需要执行一个window.open()便能新打开开你窗口
3.打开这个窗口后在模态窗口中将其关闭(window.close())
这样可以通过模态窗口间接地打开你要打开的窗口了。
相关代码:
主页面内代码:
< head >
< title > Untitled </ title >
< meta http-equiv ="Content-Type" content ="text/html; charset=gb2312" />
</ head >
< body >
< SCRIPT language =javascript >
function showDialog(dialogUrl){
var sUrl = dialogUrl;
var sFeathers = " dialogHeight:1px;dialogWidth:1px;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;
document.getElementById( " result " ).innerHTML = dialogUrl;
showDialog(dialogUrl);
}
</ SCRIPT >
输入要弹出的地址: < INPUT id =txtUrl value =http://www.sohu.com name =txtUrl size ="20" > < INPUT onclick =openUrl(txtUrl.value) type =button value =test > < br >< span id =result ></ span >
</ body >
</ html >
在模态窗口所在页面(txdialog.htm)内放如下代码:
< head >
< title ></ title >
< meta http-equiv ="Content-Type" content ="text/html; charset=gb2312" />
</ head >
< body >
< 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 " );
if (sUrl != "" ){
// alert("即将打开该地址:\n"+sUrl);
eval( " wind " + " ow.open( " + " sUrl); " );
window.close();
}
</ SCRIPT >
</ body >
</ html >
要查看效果演示可以访问:
http://200101022.ik8.com/txtest.htm (IK8测试空间,估计很快就关闭。所以如不能打开,请下载后自行配置在Web服务器)
下载:
http://files.cnblogs.com/senyx/iepoper.rar
注意不能在本地访问,因为他仍然不能逃脱IE的安全限制,请放在Web服务器中访问。如IIS,Apache,tomcat,coldfusion等。