如何为此bookmarklet创建此JavaScript对象?

时间:2013-02-26 00:59:21

标签: javascript object bookmarklet casperjs

我正在尝试对使用CasperJS的书签进行逆向工程。

它创建了一个名为__utils__的对象,我可以使用。

执行控制台命令

书签的链接在这里: -

http://casperjs.org/api.html#bookmarklet

哪个引用此JavaScript文件: -

https://raw.github.com/n1k0/casperjs/master/modules/clientutils.js

我搜索了整个源代码,但找不到对该对象如何创建的引用。

任何指针都会受到赞赏。

2 个答案:

答案 0 :(得分:0)

查看api.html的来源。在Just drag this link查看href属性中的JS之后。它接近结尾包含:

window.__utils__=new%20window.clientUtils();

答案 1 :(得分:0)

bookmarklet只运行一小段JavaScript代码,将clientutils.js的链接附加到文档的末尾。之后,它将每50毫秒运行一个匿名函数,检查脚本是否已加载(并使ClientUtils函数可用),如果有,则停止运行该函数并创建window.__utils__ ,从而使其在控制台中可用。这是更易读的格式的实际bookmarklet代码。理解它应该非常简单:

(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);
    }
  }());
})();