QINMS.com || 首页 ||

临时改写document.write

有时候用JS在某一元素动态添加一个js文件,有些运行正常,有些却不行,特别是一些不是由自己能够控制的js文件。

常见报警:

“Failed to execute 'write' on 'Document': It isn't possible to write into a document from an asynchronously-loaded external script unless it is explicitly opened.”

字面的意思就是:异步加载的外部js文件内部包含了document.write方法,这是不允许的

翻阅查询,在一篇英文文章上,发现用临时改写document.write的方法就可异步加载相关的文件,代码如下:

  1. var oldDocumentWrite = document.write --保存旧的document.write
  2. document.write = function(node){ -- 临时改写document.write
  3. $("body").append(node) --body可以是其他要插入js代码的元素
  4. }
  5. $.getScript( "xxx/docunment.js", function() {
  6. setTimeout(function() {
  7. document.write = oldDocumentWrite --重新用原始的document.write替换回来
  8. }, 200)
  9. });

要注意的是设置setTimeout的时间间隔不能太短,否则新加载的js文件没能完整运行,也没能达到预定的效果。

具体的可自己优化。



赞赏
© 2013-2023 版权所有: 村美小站 || 验证码 || 版权声明 || 免责声明 || About Us || 电子邮箱:
微 信微 博
返回顶部