Tim*_*imo 43 html javascript iframe dom
我使用以下代码动态创建iframe.
var iframe_jquery = $("<iframe>")
.addClass("foo")
.appendTo(container); // container is a jQuery object containing a <div> which already exists
Run Code Online (Sandbox Code Playgroud)
然后,我想访问其contentWindow,但它是null:
var iframe = iframe_jquery.get(0);
if (iframe){ // iFrame exists
console.log(iframe.contentWindow); // Prints "null"
var doc = iframe.contentWindow.document; // NullpointerException
}
Run Code Online (Sandbox Code Playgroud)
所以我想:"也许iframe尚未准备好了吗?" 所以我尝试过:
iframe_jquery.ready(function(){
var iframe = iframe_jquery.get(0);
console.log(iframe.contentWindow); // Prints "null"
var doc = iframe.contentWindow.document; // NullpointerException
});
Run Code Online (Sandbox Code Playgroud)
结果相同.
怎么了?
Los*_*ear 35
上周我在使用iFrames(构建一个rtf编辑器)时遇到了这个问题,是的,它还没有准备好.
我想如果我把它放在一个.ready()它可以工作,但是.ready()当DOM准备好,而不是当iFrame加载其内容时,所以我最终用jQuery包装我的代码.load().
试试这个:
$(function () {
$("#myiframe").load(function () {
frames["myframe"].document.body.innerHTML = htmlValue;
});
});
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
Poi*_*nty 16
问题是,在<iframe>真正添加到页面的实际DOM之前,您将不会"真实". 这是一个小提琴演示..
根据浏览器的不同,访问document或者<iframe>可能会有所不同.
以下是如何处理它的示例:
if (iframe.contentDocument) // FF Chrome
doc = iframe.contentDocument;
else if ( iframe.contentWindow ) // IE
doc = iframe.contentWindow.document;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
73418 次 |
| 最近记录: |