【问题标题】:Webpage limitations when wrapped inside an IFrame?包裹在 IFrame 中时的网页限制?
【发布时间】:2011-05-20 20:28:52
【问题描述】:

我正在开发一个网页,我们的客户希望通过将我的页面包装在 iframe跨域)中来插入他们的网站。我不需要与家长互动或了解 iframe 之外的任何内容。

我正在使用 HTMLCSSJavascriptWebservices

问题:与我的页面在 iframe 之外运行相比,我如何限制在 iframe 内?

【问题讨论】:

  • 我不确定具体有哪些限制,但如果您的 iframe 内容不需要访问父页面,您将不会遇到任何限制。我想这个问题纯粹是一种智力追求? :)
  • 搜索相关答案给了我很多非常具体的解决各种iframe问题的方法。我正在寻找一个更通用的不要这样做不要那样做,并注意在居住时这是不可能的 iframe.

标签: javascript iframe cross-domain


【解决方案1】:

你不是。来自您的域的 iframe 中链接的任何 JS 都将在 iframe 的上下文中运行。除了被塞进一个不寻常的容器之外,它的工作方式应该与独立装载时一样。

但是,如果您的需求发生变化,如果两个页面都编写了 JS 进行协作,则可以在父框架和 iframe 之间发送信号。在 URL 中使用 # 的方法可以被父级读取并且不会强制页面重新加载,我相信它们共享 window.resize 事件,可以手动触发而无需实际调整窗口大小。

更新:现在跨域 iframe 之间的通信方式比以前要好得多。当然,您仍然需要在两端合作 JS,但您可以使用window.postMessage,而不是通过 window.resize 和 URL 中哈希符号后的 data 触发消息。不过这是一个很酷的技巧。

【讨论】:

  • @Erik:感谢您的回答。但是如何使用<a/>、javascript window.location... 等移动到另一个 url(不离开 iframe)?
  • 每一帧都有自己的窗口对象。这个想法是能够抛出任何你想要的 src 并在 iframe 中查看和使用它,除非它们当然内置了 framebusting 代码。如果 iframe 中的 JS 定义了一个全局变量,它将是一个属性该 iframe 的窗口对象。父窗口可以访问子 iframe 的 .src 元素,我相信它们都看到相同的 window.resize 因为这更像是一个 chrome 事件,但据我所知,它在各个方面都像两个单独的页面。
【解决方案2】:

在创建链接时,如果您想为父窗口创建链接,您应该记住可能使用a-tag 的target-attribute。否则新页面将被加载到 iframe 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多