动态创建的 iFrame 在从 JQuery 加载的页面调用时为 null

Dynamically created iFrame is null when called from a page loaded by JQuery

本文关键字:调用 null 加载 创建 iFrame 在从 JQuery 动态      更新时间:2023-09-26

我有一个用常规javascript制作的动态创建的iframe。当通过常规方式从静态页面调用时,它工作得很好,但是当从 Jquery 加载的页面调用时,我收到"myIframe is null"错误。

var link = 'http://www.blah.com'
var iframe='<iframe class="adframe" id="randomnumberhere" name="widget" src="#" width="300" height="250" marginheight="0" marginwidth="0" frameborder="no" scrolling="no"></iframe>';
document.write(iframe);
var myIframe=parent.document.getElementById("randomnumberhere");
myIframe.height=250;
myIframe.width=300;
myIframe.src=link;
myIframe.style.border="0px";
myIframe.style.padding="0px";

我通过添加一个具有唯一 id 的div 然后将 iFrame 附加到该div 来解决这个问题。似乎document.write可以创建对象,但是附加到该元素并没有发生。工作代码如下。

在 html 中有一个动态创建的随机数:

<div id="randomid"></div>

然后我做了一个函数来附加到具有该特定 id 的div

function makeFrame(){
var link = 'http://blah.com'
ifrm = document.createElement("IFRAME");
ifrm.setAttribute("src", link);
ifrm.style.width="300px";
ifrm.style.height="250px";
ifrm.style.border="0px";
ifrm.style.padding="0px";
document.getElementById('randomid').appendChild(ifrm);
}
makeFrame();

仅当div 已在页面上时,这才有效。我想不出一种方法来动态制作div,然后将 iFrame 附加到该div。Document.write创建了div,但它无法将iFrame附加到该元素。也许延迟会使它起作用?以下是我尝试过的,但没有奏效。

var iDiv='<div id="randomid"></div>';
document.write(iDiv);