我正在一个项目(比如Jsfiddle或codepen)工作,我必须不断地在iframe中注入代码。 html和css代码正常工作,没有任何问题。但是,新注入的javascript代码没有执行,对输出没有影响。
无论如何刷新(不是整个iframe)或在iframe中重新执行javascript代码。如果我再次将所有html内容注入iframe,某些脚本将无法正常工作。即AngularJS。
I帧:
<iframe id="preview" sandbox="allow-scripts allow-same-origin allow-pointer-lock">
<html>
<head>
<title>Iframe demo</title>
<script>
// JS code will be injected here
</script>
</head>
<body>
</body>
</html>
</iframe>
JS(Jquery):
var content = "alert('Welcome to Stackoverflow');";
var jscode = $('#preview').contents().find('script:first');
jscode.html(content);
**香草JS:**
var content = "alert('Welcome to Stackoverflow');";
var iframe = document.getElementById("preview");
var iframewindow = iframe.contentWindow || iframe.contentDocument.defaultView;
var doc = iframewindow.document;
var js = doc.getElementsByTagName("script")[0];
js.text( content );
我已尝试过Jquery和vanilla js但无法执行注入的JS代码。
答案 0 :(得分:0)
浏览器似乎非常挑剔动态地向页面添加脚本标签。最可靠的选项似乎是document.createElement(&#39; script&#39;)。这里列出了最佳解决方案another SO question。