【问题标题】:Javascript script element set inner textJavascript脚本元素设置内部文本
【发布时间】:2012-06-15 12:51:13
【问题描述】:

我们需要在 iframe 中添加一个 javascript 元素(它在同一个网络/域中,因此不会附加安全问题)。我们让它工作了,但不知道如何在其标签之间填充脚本内容......你会怎么做?

var iframe = document.getElementById('iframeX');
var iframedocument = iframe.contentWindow.document;

var script = iframedocument.createElement('script');

script.setAttribute('type', 'text/javascript');
script.innerText = 'alert(\'hello\')'; //this doesnt work
script.value= 'alert(\'hello\')'; //this doesnt work either

var head = iframedocument.getElementsByTagName("head")[0];

head.appendChild(script);

iframe 文档中的期望结果:

<head>
    <script type="text/javascript" >
        alert('hello');
    </script>
</head>

【问题讨论】:

标签: javascript html iframe code-injection


【解决方案1】:

我遇到了 script.innerHTML 的问题,因为它在 IE8 中不起作用。

script.text = 'alert(\'hello\')';

script.text 对我来说效果更好。 发现于:Create script tag in IE8

【讨论】:

    【解决方案2】:

    你试过了吗:

    script.setAttribute('type', 'text/javascript');
    script.innerHTML = 'alert(\'hello\')';
    

    【讨论】:

    • 我测试过:OP 版本不适用于 FF,但它适用于 innerHTML。
    • 我的意思是问这个问题的人... SO (Stack Overflow) 的缩写是什么?
    • SO就是StackOverflow,OP的完整形式是什么?我在很多地方都见过!明白了...原始海报! :)
    • @dystroy innerText 不是 Firefox 的属性!
    • 是的,这就是为什么我说你是对的(并且支持你):innerText 不是标准的,也没有在 FF (Firefox) 中实现。对不起,缩写不好(甚至不是 Firefox 的首字母缩写词)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 2011-08-24
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    相关资源
    最近更新 更多