从代码后台打开新窗口

4
如果选择了特定的单选按钮,我需要在后台代码中打开一个新窗口。有没有办法做到这一点?谢谢。

5
提示:弹出窗口拦截器会阻止此窗口打开。 - epascarello
5个回答

4

我认为这应该能够正常工作;-)

在你提交之前,向单选按钮添加一些JavaScript代码以打开一个新的空白窗口。这样做可以避免弹出窗口被阻止,因为它是响应用户单击而打开的。有关如何执行此部分,请参见此链接

然后,允许正常进行提交,在页面加载时注册一个启动脚本,告诉您已经存在的窗口转到一个新的URL。

 String script = "window.open('popupPage.aspx', 'myPopup')";
 ScriptManager.RegisterStartupScript(Page, Page.GetType(), "someId", script, true);

请注意,在 JavaScript 中当您调用以下代码时:
 window.open(url, 'myPopup')

如果已经存在一个具有该名称的窗口,则会返回该窗口,而不是创建一个新窗口... 因此您的弹出窗口不会被阻止!


1
这似乎非常有效。感谢您在其他答案被接受很久之后发布了这个答案!你为我节省了很多麻烦。 - Cyberherbalist

4
您可以使用RegisterStartupScript,在页面加载后发送一个window.open脚本运行。
然而,这将导致大多数弹出窗口拦截器阻挡。

1
参见@BradParks的答案,了解如何愚弄弹出窗口拦截器的好方法。 - Cyberherbalist

1

0

RegisterStartupScript的简单示例:

RegisterStartupScript("id1", "<script type=\"text/javascript\">alert(\"I'm from JavaScript.\");</script>");

0
新窗口可能会非常棘手,根据您需要呈现的内容,您可能要考虑使用内部弹出窗口。这样做可以避免弹出窗口拦截器的干扰。如果您能提供更多细节,我们可以给出更好的答案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接