您的位置:首页 > 运维架构

[工作问题总结]window.open导致IE自动关闭问题总结[1]

2013-05-27 21:35 477 查看
------------------------------ASP.Net+Android+IO开发 .Net培训 期待与您交流!------------------------------

最近在写SSO统一入口登入,其中就遇到了window.open的链接页面的问题,在此总结一下,希望可以帮助遇到同样问题的朋友...

一.先了解下window.open

window.open(pageURL,name,parameters)

pageURL 为子窗口路径

name 为子窗口句柄

parameters 为窗口参数(各参数用逗号分隔)

locations[地址字段] menubar[菜单栏] resizable[可调节尺寸] scrollbars[滚动条] status[状态栏] titlebar[标题栏] toolbar[浏览器的工具栏]

二.导致浏览器自动关闭

我之前也用过window.open,但头一次测试告诉我说,按钮一点击(点击方法包含window.open)页面就关闭无法测试.很是无语.

于是我就在网上找导致浏览器自动关闭的原因,如果说你的客户可以接受IE设置的话,可以这样做

工具-->Internet选项-->隐私-->将启用弹出窗口阻止程序前面的勾勾去掉

或者checkbox勾上,则点击设置加入允许的站点即可

我经过这番设置之后,可以让测试打开页面了,但我自己发现,公司另一系统也用到了window.open但却可以在测试人员的机器上打开且无需我以上的设置,于是我抑郁了,同样是window.open啊,为啥?

三.跟前台调用和后台调用有关

先说下我当前代码的按钮调用方法

<asp:Button ID="btnProLOG" runat="server" OnClick="BtnProClick" CommandName="LOG8K" />

看的出来吧,跑的后台...

然后的后台是

/// <summary>

/// 选择产品

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

protected void BtnProClick(object sender, EventArgs e)

{

var button = sender as System.Web.UI.WebControls.Button;

try

{

var type = (button == null) ? "" : button.CommandName.ToUpper();

Session["ProType"] = type;

Page.ClientScript.RegisterStartupScript(Page.GetType(), "loginportal", "<script>funOpenFrame()</script>");

}

catch (Exception ex)

{

Logger().Error(" BtnProClick Exception Message: " + ex.Message);

}

}

看的出来吧

Page.ClientScript.RegisterStartupScript(Page.GetType(), "loginportal", "<script>funOpenFrame()</script>");

此句又调用了前台,先不要点评我这段恶心的代码...

在前台funOpenFrame里

function funOpenFrame() {

window.open("LoginPortalFrame.aspx", '', 'top=0,left=0,width=' + screen.availWidth + ',height=' + screen.availHeight + ',location=no,menubar=no,resizable=no,scrollbars=no,status=no,titlebar=no,toolbar=no');

window.opener = null;

window.open('', '_self');

window.close();

}

就这样写的,此写法就会造成IE浏览器自动关闭,且通过我前面一项说的设置,可以实现不关闭.

经过我仔细仔细仔细仔细看过别人写的不会造成IE自动关闭的代码后发现,他和我唯一的区别是,他没有调用后台.我的第一反应是应该不会吧...但死马当活马医吧,我试着改成只调用前台....

<img alt="" id="ImageBtn_ProLOG" runat="server" src="~/resources/themes/images/picture/btnProLOG.jpg"

onclick="funOpenFrame('LOG8K')" class="btnProLOG" />

.....然后

居然还真不会自动关闭了...好吧 我无语拉....

顺便说下,其中我还尝试在前台的ajax方法里使用window.open也会自动关闭...

------------------------------ASP.Net+Android+IO开发 .Net培训 期待与您交流!------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: