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' );

现在scripts是一个 NodeList(像一个数组),您可以使用 访问每个节点列表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 回答