2017-07-15 7 views
2

jsスクリプトがjavascriptを使用してロードされる前に、HTMLページ内のすべてのスクリプトタグのすべてのsrcを書き換えることはできますか?ページがロードされる前にHTMLページ内のすべてのスクリプトのsrcを変更する

私は<plaintext>タグを使用しようとしましたが、より良い解決策があるかどうかは疑問でした。

+0

ユースケースは何ですか? JavaScriptを最初に実行すると、すべてのスクリプトノードをリッスンする 'MutationObserver'を使ってスクリプトを実行し、読み込み中に編集することができます。 –

+0

すべてのスクリプトをロードしないようにしたいですか? –

+0

私はプロキシを使ってそれらをロードしたい –

答えて

2

私はあなたが望むものの実例を作ったと思います。 MutationObserverを使用してボディへのノードの変更をリッスンし、見つかった場合はすべてのスクリプトの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>

+0

私は分かりません。ドキュメンテーションによると、https://developer.mozilla.org/ja/docs/Web/API/MutationObserverによると、domが変更された後にイベントが発生するので、元のsrcからスクリプトをダウンロードし始めて停止できません。 –

+0

@GiuseppePes私は同じことを考えましたが、私の例ではスクリプトの実行をブロックしたようです。私はそれをテストするまでうまくいくとは思っていませんでした。 –

+0

要求を行ったネットワークコンソールを見ると、スクリプトは取得されますが、実行されないように見えます。 –

関連する問題