簡體   English   中英

逆向工程一個 Firefox 擴展

[英]Reverse engineering a Firefox extension

我是一名年輕的開發人員,在 Java 的背景下,本周第一次嘗試 JavaScript。 我為 Firefox 找到了一個不錯的插件,它允許用戶從選定的文本中復制鏈接。 它相對較小,但我想嘗試配置它,使其從按鈕而不是(右鍵單擊/選擇事件)運行

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

我不是對任何人的辛勤工作進行逆向工程,我只是想弄清楚是什么讓附加組件生效,以及如何將其工作應用於非附加組件。

源碼在這里: https://addons.mozilla.org/en-US/firefox/files/browse/77730/ (很小,只有一個jar所以不要害怕閱讀)

回到正題:它是一個簡潔的小插件,允許用戶在 web 頁面中添加多個鏈接,然后通過右鍵單擊文本並選擇復制選定鏈接來復制/粘貼選定的鏈接。

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

  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++;
        }
    }

}

如何從按鈕而不是右鍵單擊運行這種類型的加載項? (我假設它與 EOL 功能有關)

不,它與EOL function 無關 - 此 function 僅確定所用操作系統的行尾字符序列。 擴展的覆蓋調用gCopyLinks.OnCommand('all')如果它的菜單項被點擊,我猜你想添加一個按鈕做同樣的事情。 請參閱https://developer.mozilla.org/en/XUL_School/Adding_Toolbars_and_Toolbar_Buttons在擴展中添加工具欄按鈕。

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

是的。 擴展程序具有 web 內容所沒有的特權。 特別是,目前沒有 API 允許 web 應用程序將數據復制到剪貼板。 但是,有人提出正在研究中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM