如何识别在 iframe 中动态创建的文档内容

Posted

技术标签:

【中文标题】如何识别在 iframe 中动态创建的文档内容【英文标题】:How to identify the document content which is created dynamically inside iframe 【发布时间】:2021-05-16 04:16:44 【问题描述】:

如何识别在动态 iframe 下创建的文档内容 code structure

<div id="test" data-parent-url="/test.html" data-iframe-src="/test-header.html" class="sample-header">
// dynamically created iframe element 
<iframe style="border-style: none; width: 100%; height: 105px; display: block;" scrolling="no" id="V1__header" src="/test-header.html">
//  dynamically loaded document content 
</iframe>
</div>

试过了:

var ifrme = document.getElementById('V1__header');
var iframeContent = ifrme.contentWindow.document;
var iframeObj = $(iframeContent);
var contentheight = $(iframeObj.find(selector)[0]).height();

ifrme 间歇性返回 null,找不到 id。有没有其他方法可以找到在代码中动态创建的 id 和文档内容。

【问题讨论】:

有没有办法使用Jquery识别文档内容 【参考方案1】:

如果您不能确定 iframe 是否已加载,您可以通过按时间间隔进行测试来等待:

var timer = setInterval(function()
  if($('#V1__header').length !=0)
     clearIntervall(timer);
     Identifydoc();
  
,400);

function idnetifyDoc()

 var ifrme = document.getElementById('V1__header');
 var iframeContent = ifrme.contentWindow.document;
 var iframeObj = $(iframeContent);
 var contentheight = $(iframeObj.find(selector)[0]).height();

【讨论】:

【参考方案2】:

你可以使用onload回调:

  const ifrme = document.getElementById('V1__header');
  ifrme.onload = iframeLoaded;
  
  function iframeLoaded() 
    //--> logic
  

在正文标签内添加脚本。

【讨论】:

以上是关于如何识别在 iframe 中动态创建的文档内容的主要内容,如果未能解决你的问题,请参考以下文章

创建新的 iframe 并同步加载内容

如何让 angularJS 动态内容显示在 iframe 中?

具有动态内容的动态附加 iframe 在内容元素上写入 jquery 事件句柄不起作用

Web 浏览器何时请求动态创建的 iframe 的 src 内容?

如何使用 jquery 动态更改 iframe 中的内容?

如何根据 iframe 中的动态内容更改 iframe 的高度?