【问题标题】:getting dynamically content height of iframe by javascript通过javascript动态获取iframe的内容高度
【发布时间】:2011-06-30 12:52:14
【问题描述】:

在阅读并应用了这么多 JS 我发布了这个问题后,我首先对这个主题进行了研究,

我正在尝试应用 iframe,从中获取来自其他域的内容。

我试图在 iframe 内内容的滚动高度的基础上设置 iframe 高度,但没有这样做

我尝试使用 iframe 的 onload 事件但失败了...

请帮助我,我需要以任何必要的方式动态设置 iframe 的高度..

如果代码以对我有帮助的 Javascript 提供

提前致谢

【问题讨论】:

    标签: javascript iframe scroll


    【解决方案1】:

    出于安全原因,无法与不同域中的框架进行交互。

    这包括衡量其内容。

    【讨论】:

    • 我们可以在 iframe 内容中找到特定元素吗?通过 javascript 得到它的高度..... ??
    • 没有。出于安全原因,不可能与不同域中的框架进行交互。这包括测量部分其内容。
    • 那么我认为唯一可能的方法是我将其他域页面带到我的域中,然后对其进行处理.....
    • @NewbieFreak:SLaks 是对的。但是,仍然有一种方法可以让 iframe 向您发送它的新高度。详细阅读我的回答。
    【解决方案2】:

    @SLaks 是正确的。如果 iframe 内容位于不同的域中,则您无法直接访问其内容。

    您可以做的(以及我最近所做的)是设置一个代理,通过 cURL 提取内容(在 php 中,但我确定任何服务器端语言都有等效的东西)。然后 iframe 内容在同一页面上,您可以通过以下方式访问它的高度:

    var _iframeHeight = $('#iframe').contents().find('body').height();
    $('#iframe').height(_iframeHeight);

    另外我忘了提(@SLaks 感谢提醒)您必须检查所有脚本/样式/图像标签并检查/添加绝对网址。代理可能会变得非常棘手,但它会完成它。

    【讨论】:

    • 但是,除非做得很好,否则这会破坏脚本和图像。
    【解决方案3】:

    如果您能够更改 iframe 内的内容,例如,如果您是该 iframe 内容的作者或可以联系该 iframe 内容的作者,您可以设置双 iframe 技巧以将 iframe 的高度发送到您的主页面。

    这是如何实现的:

    1. 在您的主页 (AAA.com/mainpage.htm) 中放置一个 iframe (BBB.com/mainframe.htm)。
    2. 与您的主页一起创建另一个页面 (AAA.com/heightproxy.htm)
    3. 您使BBB.com/mainframe.htm 将创建一个内部带有AAA.com/heightproxy.htm 的不可见iframe。

      结果: BBB.com/mainframe.htm 在它的 onload 事件上可以加载它的 iframe AAA.com/heightproxy.htm 并在 URL 中添加一些参数。例如,它可以将它的新高度/宽度放入参数中。此外,AAA.com/heightproxy.htm 可以访问AAA.com/mainpage.htm 中的所有 JS 函数 - 因为它们在同一个浏览器窗口中并共享同一个域。这样它可以将接收到的宽度和高度重定向到主页。

    免责声明:只有在您可以修改需要包含的 iframe 的源代码时才能使用此技巧。

    【讨论】:

      【解决方案4】:

      如果内容是从不同的 URL 加载的,则无法从 iFrame 与主页交互(您可以从 iframe 测量高度,但不能将其传递到主页)。 这可以通过简单的代理脚本加载内容来覆盖。

      【讨论】:

      • <iframe> 不是 Apple 产品。
      • Apple 没有发明拉丁字母来欠序列 ;)
      • 因此它不应该像苹果产品那样大写。
      猜你喜欢
      • 2013-08-02
      • 2016-09-11
      • 2015-04-14
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      • 2015-03-06
      • 2012-05-21
      相关资源
      最近更新 更多