2013-02-26 100 views
0

我想要反向工程一个使用CasperJS的书签。这个JavaScript对象是如何为这个书签创建的?

它创建一个名为__utils__的对象,我可以使用它执行控制台命令。

链接到书签是在这里: -

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

它引用这个JavaScript文件: -

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

我经历了整个源代码搜索,我无法找到对如何创建此对象的引用。

任何指针,将不胜感激。

回答

0

小书签只是运行的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); 
    } 
    }()); 
})(); 
+0

感谢您的指导下,我忽略了书签功能的第二部分。 – Lush 2013-02-26 01:28:17

0

api.html的来源。在Just drag this link之后看看JS中的href属性。临近年底它包含:

window.__utils__=new%20window.clientUtils(); 
相关问题