首页 > 解决方案 > IFrame appendChild 页面加载后缺少孩子

问题描述

我有一个动态加载内容的 IFrame,一旦加载了内容,我需要在内容之后添加几个 div。有两个问题我解决不了。

一、AddIFrameIncludes被调用了两次(addEventListener只被调用了一次)。

二,当我在 appendChild 之后调试和停止时,我可以看到新的 div 已添加到 IFrame(两次),但是当我允许代码完成并检查 iframe 时,新的 div 不再存在。

<iframe id="helpBody" class="content" name="topic" frameborder="0" style="display: block;" src="LandingPage.html"></iframe>

LFANavi.AddIFrameIncludes = function () {
  makeRequest('GET', 'iFrameIncludes.html')
    .then(function (data) {
      let myIFrame = document.getElementById("helpBody");
      if (myIFrame) {
        let newDiv = document.createElement("DIV");
        newDiv.innerHTML=data.responseText;
        myIFrame.contentDocument.getElementsByTagName("body")[0].appendChild(newDiv);
      }
    })
}

LFANavi.SetIFrame = function (fileName) {
  let myIFrame = document.getElementById("helpBody");
  if (myIFrame) {
    myIFrame.removeEventListener("load", LFANavi.AddIFrameIncludes()); //Should I do this?
    myIFrame.addEventListener("load", LFANavi.AddIFrameIncludes(), true);
    myIFrame.contentWindow.focus();
    myIFrame.setAttribute('src', fileName);
  }
}

标签: javascriptiframe

解决方案


推荐阅读