如何防止加载外部资源,同时防止“无法执行'写入'关于'文档'“错误?

时间:2016-04-01 20:47:06

标签: javascript html resources loading external

我想推迟加载外部资源,直到我的网页加载,所以我尝试了好的“延迟”操作符

<script src="//assets.adobedtm.com/aaabbbcccddd/satelliteLib-680156eb19277c7ad2206ff3fac1c250f6d6214c.js" defer></script>

我这样做的原因是因为如果外部资源不存在或者联系该网站时出现问题,我不希望我的页面呈现缓慢或被阻止。这是Adobe无法控制的外部文件。不幸的是,在Chrome上添加此指令会在控制台中出现以下错误...

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.

有没有人知道如果资源没有加载并且阻止上述错误,我可以在最后加载此文件而不阻止我的页面呈现的方式?

1 个答案:

答案 0 :(得分:1)

我想我找到了一个解决方案:Postscribe。它似乎可以解决问题:

<body>
  <div id="blah"><!-- document.write() content gets inserted here --></div>
  <script>
    document.addEventListener('DOMContentLoaded', function() {
      postscribe('#blah', '<script src="http://url/to/script.js"><\/script>');
    });
  </script>
</body>

没有Chrome错误!

编辑:我已删除了我原来的非工作答案(使用了此huge script loading guide中的代码)以避免混淆。