对于 src 为外部域的 iframe,可以通过“父级”访问哪些方法。目的?

发布于 2024-11-16 22:05:55 字数 963 浏览 1 评论 0原文

我知道 iframe 访问父级 DOM 时存在跨域问题,反之亦然,但是我发现 iframe 可以将其父级重定向到另一个位置。以“父”页面为例:

<!-- http://www.domain1.com -->
<iframe id="some_iframe" src="http://www.domain2.com"></iframe>

以及嵌入内容:

<!-- http://www.domain2.com -->
<html>
  <head>
    <title>I'm embedded</title>
  </head>
  <body>
    <input type="button" onclick="parent.location = 'http://www.domain3.com';" value="Redirect my parent to another site" />
  </body>
</html>

如果单击嵌入内容中的按钮,父页面将成功重定向到第三个 URL。显然,iframe 中的嵌入内容可以设置其父级的位置。但是,如果我尝试调用父级上的任何其他方法(例如“parent.outerHeight”),我会收到“不安全的 JavaScript 尝试使用 URL http://www.domain1.com/ 来自带有 http://www.domain2 的框架。 com/. 域、协议和端口必须匹配。”在我的 JS 控制台中。

我很好奇除了“位置”之外还有什么其他方法(如果有的话)是嵌入内容能够调用其父对象。这些公共职能有清单吗?谢谢。

I'm aware of the cross-domain issue with iframes accessing the parent's DOM and vice-versa, however I found that the iframe can redirect it's parent to another location. Take a "parent" page for example:

<!-- http://www.domain1.com -->
<iframe id="some_iframe" src="http://www.domain2.com"></iframe>

And the embedded content:

<!-- http://www.domain2.com -->
<html>
  <head>
    <title>I'm embedded</title>
  </head>
  <body>
    <input type="button" onclick="parent.location = 'http://www.domain3.com';" value="Redirect my parent to another site" />
  </body>
</html>

If the button within the embedded content is clicked, the parent is successfully redirected to a third URL. Obviously the embedded content within the iframe has access to setting it's parent's location. However if I try to call any other methods on parent (e.g., "parent.outerHeight") I get "Unsafe JavaScript attempt to access frame with URL http://www.domain1.com/ from frame with http://www.domain2.com/. Domains, protocols and ports must match." in my JS console.

I'm curious what other methods besides "location", if any, is the embedded content able to call on it's parent object. Is there a listing of these public functions? Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情归归情 2024-11-23 22:05:55

这个问题有点特定于浏览器。在 HTML5 中,有一种经过认可的通信调用方式:postmessage。这是供您审阅的链接

This question is slightly browser-specific. With HTML5, there's a sanctioned way of communicating call postmessage. Here's a link for your review.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文