2011-07-22 194 views
1

我是一個年輕的開發人員,這周我只是想在我的手的JavaScript首次從Java中的後臺來了。我發現Firefox的一個很好的附件,允許用戶從選定的文本複製鏈接。它相對較小,但我想嘗試配置它,所以它從一個按鈕運行,而不是一個(右鍵點擊/選擇事件)逆向工程Firefox擴展

免責聲明:有問題的擴展是開源的,並在GNU通用公共許可證2.0版

我不是反向工程人的辛勤工作,我只是試圖找出是什麼使附加蜱以及如何它的運作適用的東西,不是一個插件。

源可以在這裏找到: https://addons.mozilla.org/en-US/firefox/files/browse/77730/(這是相當小的,只是一個罐子,所以不要害怕讀)

回到點:這是一個整潔的小插件,允許用戶選擇網頁中的多個鏈接,並通過右鍵單擊文本並選擇複製選定鏈接來複制/粘貼所選鏈接。

所以兩個部分,我的問題的:

  1. 如何從一個按鈕,而不是右鍵點擊運行此類附加的? (我假設它與EOL功能有關)

  2. 轉換附加組件時除了跨瀏覽器兼容性之外,還有什麼需要注意的嗎?我應該聯繫作者尋求幫助還是會冒犯?

任何和所有幫助讚賞!

* *

我敢肯定,我傳遞「真」,歡迎沒有任何理由。 也相當肯定把這個成內部類型的腳本 我在考慮的來源和製作出來的東西是小嚐試:

HTML:

<input type="button" id="grablinkstest" value="CopyLinks" onclick="welcome(true);"/> 

JAVASCRIPT:

function welcome() { 
    alert("welcome command works"); 
    var focusedWindow = document.commandDispatcher.focusedWindow; 
    var focusedDoc = document.commandDispatcher.focusedWindow.document; 
    var argc = gCopyLinks.GetLinks.arguments.length; 
    var argv = gCopyLinks.GetLinks.arguments; 
    var reMask; 

    var selLinks = []; 
    for(i = 0; i < focusedDoc.links.length; i++) { 
     if((!bSelected || focusedWindow.getSelection().containsNode(focusedDoc.links[i], true)) && (argc <= 1 || focusedDoc.links[i].href.match(reMask))) { 
      selLinks[j] = focusedDoc.links[i].href; 
      j++; 
     } 
    } 

} 
+0

如果「逆向工程」這個詞令任何人感到困擾。讓我知道,我會回答這個問題 – Cuber

+0

命令調度程序和commandDispatcher.focusedWindow似乎不能轉換成簡單的網頁腳本。我猜這是問題所在。 – Cuber

回答

0

我如何從按鈕而不是右鍵單擊運行這種類型的附加組件? (我假定它有什麼用EOL功能做)

不,無關與EOL功能 - 這一功能僅僅決定了所使用的操作系統最終的行字符序列。擴展的覆蓋要求gCopyLinks.OnCommand('all')當點擊它的菜單項,我猜你想添加一個按鈕做同樣的。有關在擴展中添加工具欄按鈕,請參見https://developer.mozilla.org/en/XUL_School/Adding_Toolbars_and_Toolbar_Buttons

轉換附加組件時除了跨瀏覽器兼容性之外,還有什麼需要注意的嗎?

是的。擴展程序具有Web內容沒有的特殊權限。特別是,目前沒有API允許Web應用程序將數據複製到剪貼板。但是,一個是proposedbeing worked on