我正在尝试对使用 CasperJS 的书签进行逆向工程。
它创建了一个对象__utils__,我可以使用它来执行控制台命令。
小书签的链接在这里:-
http://casperjs.org/api.html#bookmarklet
其中引用了这个 JavaScript 文件:-
https://raw.github.com/n1k0/casperjs/master/modules/clientutils.js
我已经搜索了整个源代码,但找不到有关如何创建该对象的参考。
任何指针将不胜感激。
我正在尝试对使用 CasperJS 的书签进行逆向工程。
它创建了一个对象__utils__,我可以使用它来执行控制台命令。
小书签的链接在这里:-
http://casperjs.org/api.html#bookmarklet
其中引用了这个 JavaScript 文件:-
https://raw.github.com/n1k0/casperjs/master/modules/clientutils.js
我已经搜索了整个源代码,但找不到有关如何创建该对象的参考。
任何指针将不胜感激。
看源码api.html。之后Just drag this link查看href属性中的JS。接近尾声时,它包含:
window.__utils__=new%20window.clientUtils();
小书签只运行一小段 JavaScript 代码,将指向 clientutils.js 的链接附加到文档的末尾。之后,它将每 50 毫秒运行一个匿名函数,检查脚本是否已加载(并使该ClientUtils函数可用),如果已加载,它将停止运行该函数并创建window.__utils__,从而使其在控制台中可用。这是更易读格式的实际书签代码。应该很容易理解:
(function () {
void(function () {
if (!document.getElementById('CasperUtils')) {
var CasperUtils = document.createElement('script');
CasperUtils.id = 'CasperUtils';
CasperUtils.src = 'https://raw.github.com/n1k0/casperjs/master/modules/clientutils.js';
document.documentElement.appendChild(CasperUtils);
var interval = setInterval(function () {
if (typeof ClientUtils === 'function') {
window.__utils__ = new window.ClientUtils();
clearInterval(interval);
}
}, 50);
}
}());
})();