将 JS 添加到空的 iframe



我正在尝试将JavaScript文件添加到iframe的标头中,以便在加载时,iframe可以在我的"后台任务"之前。目前 iframe 是空的,因为没有我希望它显示的源。也就是说,iframe 将要做的就是执行我希望提供给它的脚本。

我尝试了这里的建议:

  1. 无法追加<脚本>元素
  2. 将脚本插入 iFrame 的标头,而不清除 iFrame 的主体
  3. 从父页面调用 iframe 中的 JavaScript 代码
  4. 在 iframe 中调用 javascript 函数
  5. http://www.getallfix.com/2013/08/how-to-include-or-add-external-javascript-file-to-iframe-how-to-add-js-to-iframe/

然而,我无法对iframe进行简单的"写入"以工作。这是我正在使用的代码:

演示.html

<html>
<head>
<script src="demo.js"></script>  
<script>  
addScript('demo.js');  
function addScript(src){
// Find the iFrame
var iframe = document.getElementById('test');
var val = '<scr' + 'ipt type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></scr' + 'ipt>';
var headID = iframe.getElementsByTagName("head")[0];         
var newScript = iframe.createElement('script');
newScript.type = 'text/javascript';
newScript.src = 'demo.js';
headID.appendChild(newScript);
</script>  
</head>
<body>
    <div class="output">  
        <iframe id="test"></iframe>  
    </div>
</body>
</html>

演示.js

document.write("Hello, I'm a Demo.");

您可以直接添加内容字符串

http://jsfiddle.net/0m5axpxx/

var iframe = document.createElement('iframe');
var html = '<body><scr'+ 'ipt>alert(1)</s' + 'cript>Content</body>';
iframe.src = 'data:text/html;charset=utf-8,' + encodeURI(html);
document.body.appendChild(iframe);

您应该使用iframe.contentWindow.document,而不仅仅是iframe进行某些调用。此外,demo.js在外部页面中,而不是在 iframe 内部,因此您需要提供绝对路径(即 http://www.example.com/demo.js),或者需要设置脚本的内容。这对我有用:

var iframe = document.getElementById('test');
var headID = iframe.contentWindow.document.getElementsByTagName("head")[0];         
var newScript = iframe.contentWindow.document.createElement('script');
newScript.innerHTML = 'document.write("Hello, I'm a Demo")';
newScript.type = 'text/javascript';
headID.appendChild(newScript);

最新更新