如何在变量中收集HTML页面的所有脚本标记

时间:2012-06-18 07:38:27

标签: javascript html html-parsing

我想在某个变量中收集HTML页面中存在的所有<script> ....</script>代码部分。

什么应该是更简单的方法,任何想法如何使用JavaScript检索它。??

非常感谢任何帮助。

6 个答案:

答案 0 :(得分:26)

获取可以使用的脚本列表

  • document.getElementsByTagName("script");标签
  • document.scripts;内置集合
  • document.querySelectorAll("script"); by selector
  • $("script") jQuery by selector

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>

答案 1 :(得分:7)

最简单的方法可能是document.scripts

答案 2 :(得分:1)

你会这样做:

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

现在scripts是一个NodeList(就像一个数组),你可以使用scripts[0]scripts[1]等访问每一个。

答案 3 :(得分:1)

试试这个

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

答案 4 :(得分:0)

没有jQuery:

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

使用jQuery:

var scripts = $("script");

答案 5 :(得分: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);
        }
})();