这是不够的,只是设置innerHTML来的东西,包含一个脚本标签。您必须创建一个脚本元素并将其附加到DOM。我相信其目的是在注入大量内容时提供一些跨站点脚本保护。
例如:想您所想,虽然http://jsfiddle.net/axvaT/
document.write
将无法正常工作。 document.write
不会将文本放置在脚本标签所在的位置。相反,它会将文本放在HTML解析器当前正在查看的位置。根据JS代码运行的时间不同,这些可能是相同的,也可能完全不同。
因此,除此之外,从不使用document.write
作任何事情。 永远。即使调试。
最后,虽然有时它是有用的注入一个脚本标记指向其他一些js文件:
var script = document.createElement('script');
script.src = 'somefile.js';
document.head.appendChild(script);
与具有JS中是没有意义的脚本标记这样做。您正在使用JavaScript来创建脚本标签,该标签应立即运行一些JavaScript。为什么不只是运行那个你想逃跑的JavaScript而不是创建一个新的脚本标签来为你做呢?
所以千万不要这样做:
,而不是仅仅做:
alert('ran some JS');
你为什么需要这个? – Guanxi
@关西知道有没有可能 – user1166981
我怀疑它会起作用;你试过了吗? (你需要在所有的浏览器中测试一下)。但为什么你要这样做呢?它会给你带来什么?代码中的脚本元素只存在以便代码可以运行......如果您仍然在JS上下文中,则可以运行代码,那么将它放入脚本标记中会有什么优势? – Spudley