I am wondering whether it is possible to get all the JavaScript functions that are included in the HTML. For example, if my HTML includes the following:
<script src=".js"></script>
<script>
function foo() {}
function bar() {}
</script>
How do I use JavaScript to retrieve all the JS functions available to this webpage. In this case, I would need to retrieve foo
, bar
and all the functions defined in .js
. Doing document.getElementsByTagName("script");
only returns the scripts as HTML objects, but I need to get all the functions for each script included in the HTML. Can this be done?
I am wondering whether it is possible to get all the JavaScript functions that are included in the HTML. For example, if my HTML includes the following:
<script src="https://www.example./script.js"></script>
<script>
function foo() {}
function bar() {}
</script>
How do I use JavaScript to retrieve all the JS functions available to this webpage. In this case, I would need to retrieve foo
, bar
and all the functions defined in https://www.example./script.js
. Doing document.getElementsByTagName("script");
only returns the scripts as HTML objects, but I need to get all the functions for each script included in the HTML. Can this be done?
-
"Can this be done?"
Yes, but it is extremely hard to do so. You'd need to get all of the script tags' innerHTML if it has nosrc
, but if it does, you'd need to usefetch()
with that url and get the text response. One you get all of that, you'd need a JS parser to find every single function declaration and modifications towindow
. – Samathingamajig Commented Dec 5, 2020 at 2:30
1 Answer
Reset to default 5You could iterate on the window object and detect all functions like this:
var list = [];
for (let i in window) {
if (typeof(window[i]) === "function")
list.push(i);
}
console.log(list)
By doing this around your script, we can detect functions that were added in-between.
<script>
var list1 = [];
for (let i in window) {
if (typeof(window[i]) === "function")
list1.push(i);
}
</script>
<script>
// The script to measure
function newFunction() {}
</script>
<script>
var list2 = [];
for (let i in window) {
if (typeof(window[i]) === "function")
list2.push(i);
}
let functionList = list2.filter((item) => {return list1.indexOf(item) == -1})
console.log(functionList.join(" "));
</script>
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745069742a4609473.html
评论列表(0条)