用window.open打开的窗口,会被浏览器拦截,怎么解决?希望各位帮忙,谢谢!

解决方案 »

  1.   

    做一个简单登录页面:
    页面中的元素有:用户名录入框,密码输入框,登录按钮,取消按钮(可能还有特别的元素,在此就简单化)
    要求: 如果用户成功登录之后,web页面最大化显示(这里只能用window.open方式,不可能用showModalDialog或showModelessDialog方式),如果用户登录失败,要求必须在当前页面显示错误信息;其实上述需求我们在做任何一个web系统时,都会遇到的,而且都容易处理.但是,目前不管是Google,还是3721,还是IE6.0都带有拦截弹出窗口的功能,而且此功能基本上是被绑定在了任何一个计算机上了.那么,我们要在登录之后,弹出最大化的web窗口,就会遇到''拦截''问题(我在此就不谈拦截原理了).就我目前了解的,现在还没有一个非常好的方法处理这个问题---''怎么弹出一个既不会被拦截,又是window.open方式实现的最大化弹出窗口''但是,我是这样处理的:
    1.首先window.open,必须绑定在客户端中的button控件上,不能写在.cs里边;否则肯定会被拦截(不管是Page.RegisterStartupScript,还是
    Response.Write等等,都是没有用的), 所以,我们选择button控件的时候,只能选择HTML控件
    (参考web与Html控件的区别).2.保存*.cs页面的信息(我用的是Session,注意清除),不管是否成功登录,都要触发window.open方式,打开第二个页面之后,在第二个页面的*.cs中,处理Session信息;如果信息表示为成功登录,则关闭父窗口,否则关闭子窗口(弹出窗口)上述方式仅供参考,如果有很好的,请提出,或可以进一步参考:
    Windows XP Service Pack 2中弹出窗口拦截器的研究
    (http://blog.csdn.net/kaixin110/archive/2005/12/30/566199.aspx)
    Asp.net中HTML控件和WEB控件有什么区别:
    1. web控件是在服务器端运行的,而html控件是客户端运行的. 
    通俗点说: 就是web控件是在服务器端运行之后生成静态代码传给客户端浏览器(先服务端,后客户端)
                       而html控件说白了就是原来的html标签,是直接被客户端浏览器解释的. 要触发html控件的事件可以使用javascript脚本来实现,(先服务端,后客户端)文章出处:DIY部落(http://www.diybl.com/course/1_web/webjs/2008324/106875.html)
      

  2.   

    <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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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>