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

How to renable document.write after jQuery ajax has completed

本文关键字:新启用 启用 write document jQuery ajax      更新时间:2023-09-26

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

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

window.backupWrite = document.write;

并在成功完全加载(和执行)脚本后

document.write = window.backupWrite;

一旦你在加载完所有内容后执行document.write,它将清空页面。

如果您的目标只是检索和执行脚本,$.getScript()已经为您完成了此操作。

$.getScript('somescript.com/script/');

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