0

我必须抓取其中包含 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);
  }
 }  
});
4

3 回答 3

2

只需将原始引用保存 document.write在某个变量中并在使用替换后恢复它。

window.backupWrite = document.write;

在成功加载(和执行)你的脚本之后

document.write = window.backupWrite;
于 2012-05-25T13:28:44.463 回答
1

加载完所有内容后执行document.write后,它将空白页面。

如果您的目标只是检索和执行脚本,$.getScript()那么已经为您做到了。

$.getScript('somescript.com/script/');
于 2012-05-25T13:29:06.633 回答
0

document.write如果在文档在某些大型浏览器中呈现后运行,则完全清除 DOM。也就是说,不要使用它。如果您无法选择外部脚本,那就太糟糕了。您可以使用各种 jQuery.append方法以字符串形式添加内容。

于 2012-05-25T13:30:34.917 回答