【问题标题】:Determine if aspx page was opened by a window.open() command确定 aspx 页面是否由 window.open() 命令打开
【发布时间】:2008-12-17 17:13:16
【问题描述】:

有没有办法确定子页面后面的代码是由父页面的window.open() javascript命令打开的?

弹出页面包含一个用户控件,该控件由不是从 window.open() 命令生成的其他页面使用,我想动态添加功能以在用户完成任务后关闭页面子页面。

它是一个 ASP.NET C# 3.5 应用程序。

【问题讨论】:

    标签: c# asp.net javascript


    【解决方案1】:

    你能在查询字符串中传递一个标志来指示窗口是从哪里生成的吗?

    【讨论】:

    • 我在用户控件上创建了一个属性来指示它是否包含由弹出窗口生成的页面
    【解决方案2】:

    在 javascript 中你可以检查 window.opener 是否为空

    【讨论】:

      【解决方案3】:

      对子窗口的请求可能会有一个指向父页面的 HTTP Referer (referrer) 标头。您可以在后端检查或在客户端检查window.opener

      【讨论】:

      • 我尝试了这个解决方案,当我尝试获取 Request.UrlReferrer.AbsolutePath 时它抛出了 NullReferenceException
      【解决方案4】:

      可能是错误的,但我认为没有简单直接的方法可以做到这一点。您总是可以尝试从不同的 url 中识别它,例如"MyChildForm.aspx?from=winopen"

      --编辑-- 被 Galwegian 打败

      【讨论】:

        【解决方案5】:

        您可以在用户控件中添加一些 javascript 来测试 window.opener 是否为非 null 并在此基础上隐藏或显示关闭页面 UI。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-04-02
          • 1970-01-01
          • 1970-01-01
          • 2010-11-24
          • 2012-02-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多