用脚本关闭IE'弹出窗口'窗口

时间:2009-02-20 00:33:55

标签: c# asp.net internet-explorer asp.net-ajax

是否可以禁用“您正在查看的网页正在尝试关闭窗口。是否要关闭它?”?

据我所知,这是多年的病毒和恶意脚本活动的产物,但在合法的应用程序代码(ASP.NET)中,有没有什么方法可以将您的应用程序“注册”为APP,或者标记您可以传递给IE Popup,以便在关闭时不会显示它吗?

我正在使用的代码是在C#代码后面完成的:

ClientScript.RegisterClientScriptBlock(GetType(), "save", Utils.MakeScriptBlock("window.close();")); 

Utils.MakeScriptBlock只是一个能够达到预期效果的功能。它'注入'一个<脚本......>标记其中的代码...

可能无法解决这个问题,否则,所有脚本小子都会使用这个技巧,但我想我会问,因为我不能只使用简单的IE“popups”作为(伪)模态对话框。

此代码发生在我的ButtonSave_Click()例程中,在所有内容都通过验证后等等......

** 编辑 **
仅供参考,这是在单击ADD按钮时打开弹出窗口的代码:

这是在Page_Init()...

ButtonAdd.Attributes.Add("onclick", "window.open('Add.aspx', 'ADD_WINDOW', 'scrollbars=no,width=550,height=550,location=no,menubar=no,resizable=yes,directories=no,status=no,toolbar=no'); return false;");

5 个答案:

答案 0 :(得分:3)

如果您的脚本打开了窗口,则可以在没有弹出窗口的情况下关闭窗口。这有帮助吗?

修改 你已经用脚本打开了窗口。更改客户端脚本以调用self.close()。

ClientScript.RegisterClientScriptBlock(GetType(), "save", Utils.MakeScriptBlock("self.close();"));

答案 1 :(得分:0)

我不相信。正如您所说,以帮助防止恶意软件。

最后,浏览器并不知道你不是邪恶的。有关类似的想法,请参阅RFC 3514。

答案 2 :(得分:0)

我非常怀疑你的可能性 - 听起来像是用户必须在他们的IE设置中专门禁用的东西。

答案 3 :(得分:0)

如果用户打开浏览器窗口,则无法关闭它;但如果窗口是通过脚本打开的,你可以。听起来你只需要一个初始页面,用户可以通过“点击此处开始”链接开始,从中打开网站主要部分的新窗口;当他们全部完成后,关闭弹出窗口,他们将在初始浏览器窗口中显示“点击此处开始”消息。

答案 4 :(得分:0)

奇怪,但我发现了

<script type="text/javascript">
function closeWindow()
{
    window.close();
    return false;
}
</script>

然后调用

return closeWindow();

通常会解决这个问题。