http://blog.joycode.com/lostinet/archive/2004/07/12/27195.aspx
http://www.cnblogs.com/huobazi/archive/2004/07/10/22926.aspx
showModalLessDialog
在win=showModalDialog( 'open.htm',[a,b,c],option );后,可以立刻设置 win.opener=window;
没有用
"xp sp2和maxthon的新版都拦截了这个窗口"
我的做法是判断,如果被拦截了就显示一个连接,告诉用户这个连接用来弹出窗口的,他自己点连接就进去了.
叫他允许,不然下次还会出现提示,这样就可以了.
DHTML 怎样防止IE工具对window.open的拦截
http://www.cnblogs.com/huobazi/archive/2004/07/10/22926.aspx
我这里也有一个类似的解决方案:
<script>
window._open=window.open;
window.open=window_new_open;
function window_new_open( a,b,c )
{
var win;
if( c )
win=window._open( a,b,c );
else if( b )
win=window._open( a,b );
else
win=window._open( a );
if( win!=null&&!win.closed )
return win;
var option='status:0;help:0;dialogleft:10000px;dialogtop:10000px;dialogheight:0px;
dialogwidth:0px';
win=showModalDialog( 'open.htm',[a,b,c],option );
return win;
}
</script>
<script>
var win=window.open( 'http://www.lostinet.com/' );
win.close( );
</script>
其中 open.htm 为:
<title>
</title>
<script>
function window.onload( )
{
var args=window.dialogArguments;
var a=args[0];
var b=args[1];
var c=args[2]
var win;
if( c )
win=window.open( a,b,c );
else if( b )
win=window.open( a,b );
else
win=window.open( a );
window.returnValue=win;
window.close( );
}
</script>
这个的好处就是不用改变已有的代码。只要想办法把这个代码放进原来的网页的前面把window.open替换掉就可以了。
IE中,关闭窗口是 window.onunload 不执行的 bug
当使用
window.onunload=function(){...} 时,
如果窗口刷新或浏览其他页面,则该函数会被调用.
而如果窗口是被关闭时,则该函数不会被调用.
目前不清楚为什么会这样.
使用 window.attachEvent('onunload',function(){...});则可以解决问题.
我们习惯用onbeforeunload来代替
我也遇到过这样的事情,只好用onbeforeunload来代替的,不明白是怎么回事,现在看来只好认为是ie的bug了 : )
这样不错,解决了一个很不爽的问题
我原来解决的办法是在onunload函数最后加上alert('xxx'),就可以了
所以我想它不是不执行,它是执行了,但是关闭的速度比执行里面内容的速度还快,所以如果没有alert停住,有时候是成功的,有时候失败
用onbeforeunload来代替在打开本页面后就关闭是可以的,但此页面转到其它页面,又转后到本页面,然后关闭它又不起作用了,怎么办
建议多读读标准
ms做的一些扩展,拿到firefox,opera等等浏览器上,就惨不忍睹了,有很多ms的扩展,用标准的方法也能实现,而且就不依赖于浏览器了。
对那些不能实现的,只要放弃一些看似花哨,但是实际没有用的东西,你做的网页就可以做到对世界上每一个用户都是友好的。
gmail的用户界面不好么?但是人家高度兼容所有的浏览器,看着虽然不花哨,但是非常的方便快捷,那才是技术的体现。
=============================
window._open=window.open;
window.open=window_new_open;
function window_new_open( a,b,c )
{
var win;
if( c )
win=window._open( a,b,c );
else if( b )
win=window._open( a,b );
else
win=window._open( a );
if( win!=null&&!win.closed )
return win;
var option='status:0;help:0;dialogleft:10000px;dialogtop:10000px;dialogheight:0px;
win=showModalDialog('open.htm',[a,b,c],option);
return win;
}
</script>
<script>
function window.onload( )
{
var args=window.dialogArguments;
var a=args[0];
var b=args[1];
var c=args[2]
var win;
if( c )
win=window.open( a,b,c );
else if( b )
win=window.open( a,b );
else
win=window.open( a );
window.returnValue=win;
window.close( );
}
</script>

