8

<script> ....</script>HTMLページにあるすべてのコードセクションをいくつかの変数に収集したいと思います。

これを行うためのより簡単な方法は何でしょうか。JavaScriptを使用してどのように取得できるか考えてみてください。

どんな助けでも大歓迎です。

4

6 に答える 6

33

使用できるスクリプトのリストを取得するには

  • document.getElementsByTagName("script");タグで
  • document.scripts;ビルトインコレクション
  • document.querySelectorAll("script");セレクターによる
  • $("script")セレクターによるjQuery

var scripts = document.getElementsByTagName("script");
for (var i = 0; i < scripts.length; i++) {
  if (scripts[i].src) console.log(i, scripts[i].src)
  else console.log(i, scripts[i].innerHTML)
}

// To get the content of the external script 
// - I use jQuery here - only works if CORS is allowing it

// find the first script from google 
var url = $("script[src*='googleapis']")[0].src; 

$.get(url,function(data) { // get the source 
  console.log(data.split("|")[0]); // show version info
});  
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
  console.log("Inline script");
</script>
<script>
  function bla() {
    console.log("Other inline script");
  }
</script>

于 2012-06-18T07:41:51.013 に答える
9

最も簡単な方法はおそらくdocument.scripts

于 2012-06-18T07:47:49.643 に答える
1

あなたはするでしょう:

var scripts = document.getElementsByTagName( 'script' );

これでNodeList(配列のような)になり、scriptsなどを使用してそれぞれにアクセスできます。scripts[0]scripts[1]

于 2012-06-18T07:42:41.173 に答える
1

これを試して

var scripts = document.getElementsByTagName("script");
于 2012-06-18T07:44:44.777 に答える
0

jQueryなし:

var scripts = document.getElementsByTagName("script");

jQueryを使用する場合:

var scripts = $("script");
于 2012-06-18T07:43:07.960 に答える
0

どうぞ -

(function () { 
        'use strict';
        let logscript = function () {
            let js = document.scripts;
            for (let i = 0; i < js.length; i++) {
                if (js[i].src) {
                        console.log(i, js[i].src);
                    } else {
                        console.log(i, js[i].innerHTML);
                }   
            }
        };
        if (document.readyState === 'complete') {
                logscript();
        } else {
                window.addEventListener('load', logscript);
        }
})();

于 2019-07-14T14:36:27.693 に答える