Javascript脚本元素设置内部文本

Posted

技术标签:

【中文标题】Javascript脚本元素设置内部文本【英文标题】:Javascript script element set inner text 【发布时间】: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>

【问题讨论】:

工作正常jsfiddle.net/FU7ZK 它似乎在这里工作:jsfiddle.net/mRgn7 【参考方案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就是***,OP的完整形式是什么?我在很多地方都见过!明白了...原始海报! :) @dystroy innerText 不是 Firefox 的属性! 是的,这就是为什么我说你是对的(并且支持你):innerText 不是标准的,也没有在 FF (Firefox) 中实现。对不起,缩写不好(甚至不是 Firefox 的首字母缩写词)。

以上是关于Javascript脚本元素设置内部文本的主要内容,如果未能解决你的问题,请参考以下文章

javascript的outerHTML属性的作用

javascript常用函数

从没有内部文本内容的元素中获取 html 标记

从javascript更改div元素的属性[重复]

Javascript - 从数组中查找所有类,从类中获取并返回内部文本

元素内部文本的 XML 文件转换?