【问题标题】:Iframe with autoheight带自动高度的 iframe
【发布时间】:2010-04-14 03:26:41
【问题描述】:

我需要使用跨域 src 自动调整 iframe,我尝试使用 javascript,但是当我尝试获取 iframe contentWindow 的高度时出现“访问被拒绝”。有人知道什么方法吗?

【问题讨论】:

  • 您无法获取 iframe 的内容可能是因为目标 iframe 位于不同的域/端口/协议上。您在 iframe 中粘贴的是什么?因为可能有适合您情况的方法。
  • 我在 iframe 中粘贴了一个子域页面,并找到了一种使其工作的方法,我只在两个页面中设置了相同的域,因此得到了 iframe contentWindow 而没有“拒绝访问”消息。这是脚本 有了这个,您可以使用 javascript 脚本跨子域。谢谢! PD对不起我的英语不好! :S

标签: javascript jquery html jquery-plugins


【解决方案1】:

ItzWarty 是对的:父页面无法与子文档通信,甚至无法确定其高度。早在 2008 年,Michael Mahemoff 就发布了对 Cross-Domain Communication with IFrames 的详细概述,可能会为您提供一些指导。

然而,希望即将到来 - HTML5 包括对这种情况的改进,称为“Cross-document messaging”,它在 Firefox 3、Safari 4、Chrome 2、Opera 9.2 甚至 IE 中都受支持... 8. 如果您的用户只使用那些支持的浏览器,你可以使用它。

也许您可以将 IFRAME 元素上的“scrolling”属性默认设置为“auto”并测试 window.postMessage - 如果成功,请将“scrolling”设置为“no”并使用函数相应地调整 IFRAME 的大小.

我最近处理了一个类似的问题(来自 domain.tld 的父页面在 blog.domain.tld 上构建了一个页面)但我能够使用 Mahemoff 描述的“旧的document.domain hack”来解决问题,尽管它不是Opera 支持。

祝你好运。

【讨论】:

    【解决方案2】:

    如果您在服务器上创建了一个代理来获取内容,JavaScript 就没有这个限制。

    【讨论】:

      【解决方案3】:

      域问题只是您面临的一个问题 - IE8 是另一个问题。即使可以访问 iframe,IE8 也无法准确检索 body.clientHeight 信息。 Firefox 也可以...

      【讨论】:

        猜你喜欢
        • 2012-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-01
        • 2015-05-29
        • 1970-01-01
        • 2013-02-21
        相关资源
        最近更新 更多