我必须抓取一个包含document.write的JS片段 - 这会导致在document.write呈现后页面变为空白。通过重新定义document.write并将脚本的响应传递给我用来从getScript()jQuery函数输出响应的函数,我能够解决这个问题。我遇到了一个问题,但是其他元素和脚本会在页面后面加载,我的重新定义会阻止在页面上输出。如何在jQuery getScript()完成后将document.write设置回默认功能?
$.getScript('somescript.com/script/', function(){
//Prevent document.write normal behavior
document.write = function(markup) {
fullMarkup += markup;
appendResponse(markup);
}
}
});
答案 0 :(得分:2)
只需将原始引用保存到某个变量中document.write
,然后在使用替换后将其恢复。
window.backupWrite = document.write;
成功加载(并执行)脚本
document.write = window.backupWrite;
答案 1 :(得分:1)
在所有内容加载后执行document.write
,它将使页面空白。
如果你的目的只是检索和执行脚本,$.getScript()
已经为你做了。
$.getScript('somescript.com/script/');
答案 2 :(得分:0)
document.write
会完全清除DOM。也就是说,不要使用它。如果您没有选择外部脚本,那太糟糕了。您可以使用各种jQuery .append
方法以字符串形式添加内容。