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

时间:2012-05-27 04:58:53

标签: javascript jquery html

我有一个用常规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";

1 个答案:

答案 0 :(得分: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);