I would like to collect all the code section present in the HTML page in some variable.
What should be the simpler w
The simplest way is probably document.scripts
To get a list of scripts you can use
document.getElementsByTagName("script");
by tagdocument.scripts;
Built-in collectiondocument.querySelectorAll("script");
by selector$("script")
jQuery by selectorvar 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>
try this
var scripts = document.getElementsByTagName("script");
Here you go --
(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);
}
})();
Without jQuery :
var scripts = document.getElementsByTagName("script");
With jQuery :
var scripts = $("script");
You would do:
var scripts = document.getElementsByTagName( 'script' );
Now scripts
is a NodeList (like an array), and you can access each one using scripts[0]
, scripts[1]
and so on.