2013-02-26 99 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(); 
相關問題