在Iframe中刷新或重新执行JS代码

时间:2014-05-03 03:17:59

标签: javascript jquery

我正在一个项目(比如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代码。

1 个答案:

答案 0 :(得分:0)

浏览器似乎非常挑剔动态地向页面添加脚本标签。最可靠的选项似乎是document.createElement(&#39; script&#39;)。这里列出了最佳解决方案another SO question