通常,使用innerHTML时不会执行脚本标签。在您的情况下,这很好,因为该
document.write调用将清除页面中已有的所有内容。但是,这使您无需再添加任何HTML
document.write。
jQuery的HTML操作方法将为您执行HTML脚本,然后诀窍是捕获
document.write对HTML
的调用并将HTML放置在正确的位置。如果足够简单,那么将执行以下操作:
var content = '';document.write = function(s) { content += s;};// execute the script$('#foo').html(markupWithscriptInIt);$('#foo .whereverThedocumentWriteContentGoes').html(content);虽然变得复杂。如果脚本在另一个域上,它将被异步加载,因此您必须等到完成后才能获取内容。另外,如果它只是将HTML写入片段的中间而没有可轻松选择的包装元素呢?writeCapture.js
(完全公开:我写了它)解决了所有这些问题。我建议只使用它,但是至少您可以查看代码以了解其如何处理所有内容。
编辑:这是一个页面,展示听起来像您想要的效果。



