0

我有一个使用常规 javascript 动态创建的 iframe。当它通过常规方式从静态页面调用时效果很好,但是当从 Jquery 加载的页面调用时,我得到一个“myIframe 为空”错误。

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";
4

1 回答 1

1

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

为 html 中的 div 动态创建随机数:

<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);
于 2012-05-29T06:49:42.313 回答