如何在jQuery ajax完成后启用document.write

时间:2012-05-25 13:26:03

标签: javascript jquery

我必须抓取一个包含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);
  }
 }  
});

3 个答案:

答案 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方法以字符串形式添加内容。