jsスクリプトがjavascriptを使用してロードされる前に、HTMLページ内のすべてのスクリプトタグのすべてのsrcを書き換えることはできますか?ページがロードされる前にHTMLページ内のすべてのスクリプトのsrcを変更する
私は<plaintext>
タグを使用しようとしましたが、より良い解決策があるかどうかは疑問でした。
jsスクリプトがjavascriptを使用してロードされる前に、HTMLページ内のすべてのスクリプトタグのすべてのsrcを書き換えることはできますか?ページがロードされる前にHTMLページ内のすべてのスクリプトのsrcを変更する
私は<plaintext>
タグを使用しようとしましたが、より良い解決策があるかどうかは疑問でした。
私はあなたが望むものの実例を作ったと思います。 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>
私は分かりません。ドキュメンテーションによると、https://developer.mozilla.org/ja/docs/Web/API/MutationObserverによると、domが変更された後にイベントが発生するので、元のsrcからスクリプトをダウンロードし始めて停止できません。 –
@GiuseppePes私は同じことを考えましたが、私の例ではスクリプトの実行をブロックしたようです。私はそれをテストするまでうまくいくとは思っていませんでした。 –
要求を行ったネットワークコンソールを見ると、スクリプトは取得されますが、実行されないように見えます。 –
ユースケースは何ですか? JavaScriptを最初に実行すると、すべてのスクリプトノードをリッスンする 'MutationObserver'を使ってスクリプトを実行し、読み込み中に編集することができます。 –
すべてのスクリプトをロードしないようにしたいですか? –
私はプロキシを使ってそれらをロードしたい –