我怀疑有些用户有工具栏、插件、恶意软件或其他东西,当他们访问我们的网站时,它们会在他们的浏览器中运行一些 javascript,而这些 javascript 会破坏我们页面上的功能。
我的 javascript 可以查看已从其他文件(即 http://some.site/script.js'> 加载的 javascript 吗?
我怀疑有些用户有工具栏、插件、恶意软件或其他东西,当他们访问我们的网站时,它们会在他们的浏览器中运行一些 javascript,而这些 javascript 会破坏我们页面上的功能。
我的 javascript 可以查看已从其他文件(即 http://some.site/script.js'> 加载的 javascript 吗?
你的问题很有趣,但动机是错误的,IMO。是什么让你相信“某事”正在搞乱你的 JavaScript?你能重现这个问题吗?即使某种小书签正在破坏全局 JavaScript 代码,您(作为开发人员)也有能力检查正确的功能并在需要时进行 polyfill。
如果您更仔细地查看您的代码以及为什么它没有按照您的预期执行,我希望您会发现恶意软件/工具栏/插件不是罪魁祸首。
隔离失败的代码并重现该行为。
在浏览器上打开开发者工具(通常使用 F12)。然后检查网络部分/选项卡,它将列出加载到当前文档中的所有资源。
如果您想查找页面加载的脚本并且您无法访问开发工具,您可以在 DOM 中搜索脚本标签。这只会找到由 DOM 加载的脚本(这是非常典型的)。但它不会找到通过 xhr 请求加载然后 eval-ed 的脚本,也不会找到浏览器扩展加载的脚本。
但是,这仍然可能对您有所帮助。你可以这样做:
console.log(window.document.getElementsByTagName("script"))
这会将所有加载的脚本记录到控制台。或者,您可以在客户端中对此进行分析,并在您看到可疑内容时弹出一条明亮的大警告消息。
要捕获其他类型的请求,您可以在 xhr send 方法中添加一个包装器,如下所示:
XMLHttpRequest.prototype.send = function () {
// do some checking of the request
// do the actual request
this.send();
}
我还没有尝试过,所以可能会有一些警告,比如我不确定是否所有浏览器引擎都允许你重新定义内置类型的方法。但值得一试。