【问题标题】:Open new window from code-behind从代码隐藏打开新窗口
【发布时间】:2010-10-28 04:40:57
【问题描述】:

如果选择了特定的单选按钮,我需要在回发时从代码隐藏中打开一个新窗口。

有什么办法吗?

谢谢。

【问题讨论】:

  • 仅供参考:弹出窗口阻止程序将阻止此窗口打开。

标签: c# asp.net javascript code-behind


【解决方案1】:

我认为这应该可行;-)

在您的单选按钮中添加一些 javascript 以打开一个新的空白窗口在您回帖之前。这使得弹出窗口阻止程序不会阻止您的弹出窗口,因为它是响应用户点击而打开的。请参阅this link 了解如何执行此部分。

然后,让回发正常进行,在页面加载时,注册一个启动脚本来告诉您已经存在的窗口转到一个新的 url。

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

请注意,在 javascript 中,当您调用时

 window.open(url, 'myPopup')

如果已经存在同名的窗口,它将返回它而不是创建一个新窗口...所以您的弹出窗口不会被阻止!

【讨论】:

  • 这似乎工作得很好。感谢您在其他答案被接受后很久才发布此答案!你为我省去了很多悲伤。
【解决方案2】:

新窗口可能非常粗略,根据您需要展示的内容,如果愿意,您可以考虑使用窗口内弹出窗口。这样您就可以避免弹出窗口阻止程序。如果您可以提供更多详细信息,我们可以提供更好的答案。

【讨论】:

    【解决方案3】:

    RegisterStartupScript 的简单示例:

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

    【讨论】:

      【解决方案4】:

      您可以使用 RegisterStartupScript 发送一个 window.open 脚本,以便在页面加载后运行。

      但是,这会导致大多数弹出窗口阻止程序妨碍您。

      【讨论】:

      • 在此处查看@BradParks 的回答,了解如何欺骗弹出窗口拦截器的好主意。
      【解决方案5】:

      你需要运行javascript on postback

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-10-15
        • 1970-01-01
        • 1970-01-01
        • 2017-07-13
        • 1970-01-01
        • 2016-10-19
        • 2013-03-02
        相关资源
        最近更新 更多