【问题标题】:Trigger redirection to another page if specific page is loaded within an iframe如果在 iframe 中加载了特定页面,则触发重定向到另一个页面
【发布时间】:2020-01-31 14:51:55
【问题描述】:

我正在使用 Limesurvey 创建客户调查。因为我想在我公司的主页上嵌入调查,所以我使用 iframe 来实现这一点。这样可以确保我的官方页眉和页脚可用,并且我不必在 Limesurvey 中重建这些元素。

Limesurvey 提供了在某人完成调查后重定向到另一个页面的可能性(例如感谢页面)。由于我正在嵌入 Limesurvey,因此我无法从公司主页重定向到我的官方感谢网站,因为我会有双页眉和双页脚。

我想到的是重定向到一个虚拟站点。从父站点,我想检查该事件并触发我重定向到我的感谢站点。

我不知道如何在 Javascript 中做到这一点。如何定义事件侦听器以检查 iframe 中是否已加载特定站点,然后在父级中触发我的重定向。

非常感谢!

【问题讨论】:

    标签: javascript html redirect iframe


    【解决方案1】:

    您可以使用 <element>.documentWindow.location.href 检查 IFrame 中的 URL(如果它位于同一域中):

    例如,如果您的 iframe 具有 id 'frame'

    document.getElementById('frame').documentWindow.location.href
    

    但是,如果 IFrame 位于不同的域中,则您无法检查 IFrame 中的 URL,这是由于现代浏览器中的安全机制造成的。

    如果你不在同一个页面,它会引发异常:

    Error: Permission denied to get property Location.href
    

    参见 this SO answer for more detail 也如此处所述,该属性在 chrome 中的命名不同:documentWindow 在 Chrome 中称为 contentDocument

    【讨论】:

    • LimeSurvey 和我的父页面在同一个顶级域中。所以从那里没有问题。我该怎么做?
    • 您的链接帮助我找到了以下工作概念证明:stackoverflow.com/questions/2429045/…。非常感谢!现在可以识别重定向:-)
    猜你喜欢
    • 2017-06-08
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 2017-06-25
    • 2011-05-04
    • 1970-01-01
    相关资源
    最近更新 更多