作为我的一个挑战,我决定做一个像jsfiddle这样的小代码播放器,我已经做完了,但是当我尝试执行JS时,当我尝试像这样调用iframe中的一个元素时,我的问题就来了:
document.getElementById("hola").innerHTML="nohola";
它只是说:
TypeError: document.getElementById(...) is null
有一个现场演示:jsfiddle.net
我如何将js注入iframe并在其中调用元素?
问题是您的script
标签是由document
主文档的对象创建的。
var script = document.createElement('script');
这将使其中的javascript成为主文档的作用域。您必须使用的document
对象创建它iframe
,以便javascript的作用域为iframe
。
您可以iframe
通过以下contentWindow.document
属性访问文档:
function runJs() {
var iframe = document.getElementById('resultIframe');
var frameDoc = iframe.contentDocument || iframe.contentWindow.document;
var body = $('body', frameDoc);
var code = $('#codeJs').find('textarea').val();
var script = frameDoc.createElement("script"); // not document.createElement('script');
script.setAttribute("type", "text/javascript");
script.textContent = code;
body[0].appendChild(script);
}
另请参阅这些答案
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句