【发布时间】:2016-02-07 02:32:35
【问题描述】:
我希望能够检测页面使用的所有框架/库,以帮助了解何时动态生成内容等。
我下载并解压了两个 Chrome 扩展程序的源代码,Library Detector 和 Appspector。看起来他们只是简单地调用window.FUNCTION_NAME_HERE,例如:
'Backbone.js': function () {
return window.Backbone && typeof(window.Backbone.sync) === 'function';
},
'Underscore.js': function () {
return window._ && typeof(window._.identity) === 'function' &&
window._.identity('abc') === 'abc';
},
'Spine': function () {
return window.Spine;
},
'Angular': function () {
return window.angular;
},
'Ning': function () {
return window.ning;
},
'Zepto': function () {
return window.Zepto;
}
等等
我有几个问题:
- 每个调用的框架(例如“Spine”、“angular”)的标识符是什么?有没有办法通过 AJAX 或其他方式检索这些信息,这样我就不必手动输入它们了?
- 我真的不明白
window.angular是什么意思,除了它返回角度对象或无。我知道如果可以通过 window 对象访问 angular 函数,AngularJS 已经加载,但我不确定作为 window 的成员函数意味着什么。 - 为什么 Backbone 和 Underscore 的过程与其他的不同?您怎么知道该使用哪一个?
- 我尝试在使用 React 的 Uber 主页上运行这两个扩展,但它们都没有检测到 React。当我尝试
console.log(window)时,也没有列出 React 对象。为什么会这样?在这些情况下我如何才能检测到框架?
【问题讨论】:
-
您的代码期望库被导出到全局空间,但事实并非如此。而如今,对于捆绑商来说,情况可能并非如此。
-
“为什么会这样,在这些情况下我如何才能检测到框架?” --- 自动它不太可能,至少容易可靠。
-
虽然我可以看到这个目标的用处,但我非常不确定是否真的有一种简单的方法可以检测大多数这些库的存在。与以前相比,Javascript 库现在可以以许多不同的方式“存在”。诚然,将其作为浏览器扩展程序可能会提供一些普通页面脚本不具备的分析功能。
标签: javascript angularjs dom backbone.js reactjs