【问题标题】:JavaScript print running code [duplicate]JavaScript打印运行代码[重复]
【发布时间】:2018-08-10 17:39:50
【问题描述】:

如何打印打开页面的所有脚本代码?

所有脚本都在 .js 本地文件中或通过附加添加

document.body.appendChild(script);

我尝试通过 var scriptList = document.scripts; 或从 HTML 中获取节点来获取它。我得到的只是带有脚本数组的 HTMLCollection 对象(没有我需要的代码)或

<body>
    <script src="one.js"></script>
    <script src="two.js"></script>
    <script src="three.js"></script>
    <script type="text/javascript".src="https://xxx.js/"></script>
</body>

我从来没有得到的是实际运行的代码。任何想法如何得到它?我相信浏览器内存中某处的代码,因为代码正在运行,我可以在检查器中看到它。

【问题讨论】:

  • 我不得不问:你为什么需要这个?
  • 所以你想要 one.js 文件中的源代码?
  • 我想把它们的代码合并起来,因为它们都在运行。我想对代码进行哈希处理,然后将其与服务器中的其他哈希进行比较,以确保用户没有编辑原始代码。
  • @Gniewomir 不信任客户端代码。那时你并不关心用户做了什么。
  • 另外,浏览器可以更改它。扩展可以改变它。而加载在浏览器内存中的“可执行代码”当然不一定就是你发送的源代码。这取决于很多因素。浏览器版本等...

标签: javascript


【解决方案1】:

试试这个,现在从 src 获取代码:

var scriptList = document.scripts;

var code = "";
for (var i = 0; i < scriptList.length; i++) {
    var req = new XMLHttpRequest();
    req.onload = function () {
        code = code + req.responseText;
    }
    req.open("GET", scriptList[i].src);
    req.send();
}
alert(code);

【讨论】:

  • 结果是空字符串,因为
  • 好的。我将编辑我的答案。
  • @Gniewomir,现在试试。
猜你喜欢
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
  • 2012-10-10
  • 1970-01-01
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多