如何运行以嵌入形式插入到.innerHTML中的javascript?

如何运行以嵌入形式插入到.innerHTML中的javascript?,javascript,Javascript,这可能吗 我插入了这样一个简单的测试片段 <script type="text/javascript">//<![CDATA[ document.write('foo'); //]]></script> // 但它什么也没做。(W3学校建议使用CDATA,但这没有帮助) 为了重申这一点,该代码段被写入body标记的.innerHTML属性中 我在谷歌上看到过一些关于eval()的提及,但不太确定这是相关的还是良好的做法 像在eval中那样包装代码没有效

这可能吗

我插入了这样一个简单的测试片段

<script type="text/javascript">//<![CDATA[ 
document.write('foo');
//]]></script> 
//
但它什么也没做。(W3学校建议使用CDATA,但这没有帮助)

为了重申这一点,该代码段被写入body标记的.innerHTML属性中

我在谷歌上看到过一些关于eval()的提及,但不太确定这是相关的还是良好的做法


像在eval中那样包装代码没有效果。

Javascript只在第一次读取时执行,而不是在动态插入时执行。您必须使用
eval()
函数之类的函数来执行实际脚本的内容。您还可以使用诸如
getObjectsByTagName()
之类的DOM函数来获取脚本标记,并从中获取其内容。

是的,
eval()
通常不是好的做法,但有时是合适的。许多程序员使用这些函数修补更大的设计缺陷。鉴于实际调用脚本缺乏上下文,我无法对您的用法发表评论。我强烈建议不要使用.innerHTML来运行所有JS。如果您没有正在运行的脚本,也没有用来触发脚本的事件处理程序,那么您就没有任何方法来调用使用.innerHTML插入的脚本。您可能需要研究jQuery及其.ready()函数(请参阅)。为什么要尝试模拟onload事件?我假设您无法使用现有的onload事件或其他处理程序?编辑-这是对OP注释的响应,当您使用实际对象而不是.innerHTML动态添加它时,我不再看到它被执行