无法通过 jQuery 访问 iFrame 的类的高度

Posted

技术标签:

【中文标题】无法通过 jQuery 访问 iFrame 的类的高度【英文标题】:Can't access class' height of iFrame via jQuery 【发布时间】:2021-08-14 01:07:57 【问题描述】:

我想通过 iFrame 在我的网站上添加 Instagram 帖子。由于帖子可以有不同的高度(来自不同的比率),我需要检查“嵌入”类的高度,即 Instagram 页面的正文标签中的高度。

所以我通过以下方式包含 iFrame:

<p class="embedded-iframe">
 <iframe class="instagram-embed" id="iframe-1" src="https://www.instagram.com/p/COvuizXoHPD/embed/captioned/" frameborder="0" scrolling="no" allowfullscreen="allowfullscreen" data-iframe-id="1">
 </iframe>
</p>

没有任何进一步的 CSS,iFrame 的宽度为 300 像素,高度为 150 像素。

现在在 iFrame 的 body-tag 中,有一个带有“Embed”类的 div,并且这个类具有我为 iFrame 设置样式所需的高度。 所以我试图得到这个类的高度,但它不起作用。这是我的代码:

$(document).ready(function () 

    $("iframe").load(function()

        console.log("iFrame loaded");

        var test = $("iframe").contents().find(".Embed").height();

        console.log(test);

    );

);

第一个日志条目被正确写入控制台,但 var test 的值是 null。 我也尝试过不同的课程,但每次都是同样的问题。

【问题讨论】:

您无法访问第 3 方 iframe 的内容 【参考方案1】:

尝试使用find("html").html() 获取内容

示例:

var htmlIframe=$('#iframe-1').contents().find("html").html();
htmlIframe.find(".Embed").height();

【讨论】:

这会在控制台中带来一个错误:Firefox 中的 Uncaught TypeError: htmlIFrame is undefined 和 Chrome 中的 Cannot read property 'find' of undefined

以上是关于无法通过 jQuery 访问 iFrame 的类的高度的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 jquery 不采用这个 iframe 的类?

使用 jquery 选择器获取 iframe 内容

jQuery 跨域 iframe 脚本

无法通过 api 调用 pauseVideo 访问 youtube 嵌入式 iframe

使用 JQuery 访问由 chrome 扩展注入的 iframe

如何使用 jquery 访问 iFrame 父页面?