在加载页面之前修改html页面中所有脚本的src

时间:2017-07-15 19:05:06

标签: javascript html dom

在使用javascript加载js脚本之前,是否可以在html页面中重写所有脚本标记的所有src?

我尝试使用<plaintext>标签,但我想知道是否有更好的解决方案。

1 个答案:

答案 0 :(得分:2)

我想我做了一个你想要的实例。它使用MutationObserver监听对body的节点更改,并在找到时更改所有脚本的src。它要求您的JavaScript在目标文件之前执行。

<script>
  // select the target node
  var target = document.body;

  // create an observer instance
  var observer = new MutationObserver(function(mutations) {
    mutations.forEach(function(mutation) {
      console.log(mutation.type)
      Array.from(document.querySelectorAll('script')).forEach(s => {
        if (s.src && s.src.indexOf('jquery') !== -1) {
          s.src = "" // this resets the script src
        }
      });

      console.log('Jquery is loaded:', typeof $ !== 'undefined')
    });
  });

  // configuration of the observer:
  var config = {
    childList: true
  };

  // pass in the target node, as well as the observer options
  observer.observe(target, config);
</script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js?hej"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js?oj"></script>