Javascript 对Firefox扩展进行反向工程

Javascript 对Firefox扩展进行反向工程,javascript,firefox,firefox-addon,hyperlink,copy-paste,Javascript,Firefox,Firefox Addon,Hyperlink,Copy Paste,我是一名年轻的开发人员,本周刚从Java背景开始尝试JavaScript。我发现了一个很好的Firefox插件,允许用户从选定文本复制链接。它相对较小,但我想尝试配置它,使其从按钮而不是(右键单击/选择事件)运行 免责声明:所讨论的扩展是开源的,并根据GNU通用公共许可证2.0版获得许可 我不是逆向工程任何人的艰苦工作,我只是想弄清楚是什么让附加组件运转良好,以及如何将其工作应用到非附加组件的东西上 可从以下网址获取来源: (它很小,只有一个罐子,所以不要害怕阅读) 回到要点:这是一个整洁的小插

我是一名年轻的开发人员,本周刚从Java背景开始尝试JavaScript。我发现了一个很好的Firefox插件,允许用户从选定文本复制链接。它相对较小,但我想尝试配置它,使其从按钮而不是(右键单击/选择事件)运行

免责声明:所讨论的扩展是开源的,并根据GNU通用公共许可证2.0版获得许可

我不是逆向工程任何人的艰苦工作,我只是想弄清楚是什么让附加组件运转良好,以及如何将其工作应用到非附加组件的东西上

可从以下网址获取来源: (它很小,只有一个罐子,所以不要害怕阅读)

回到要点:这是一个整洁的小插件,允许用户在网页中选择多个链接,并通过右键单击文本并选择“复制选定链接”来复制/粘贴所选链接

因此,我的问题有两个部分:

  • 如何通过按钮而不是右键单击来运行这种类型的加载项?(我假设它与EOL函数有关)

  • 在转换附加组件时,除了跨浏览器兼容性之外,还有什么需要注意的吗?我应该联系作者寻求帮助,还是会冒犯作者

  • 感谢您的帮助

    * *

    我很确定我会毫无理由地通过“真”来欢迎你。 还可以肯定地将其转换为内部类型脚本 我小小的尝试就是从源头上获取一些东西:

    HTML:

    
    
    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++;
            }
        }
    
    }
    
    函数欢迎(){
    警报(“欢迎命令工作”);
    var focusedWindow=document.commandDispatcher.focusedWindow;
    var focusedoc=document.commandDispatcher.focusedWindow.document;
    var argc=gCopyLinks.GetLinks.arguments.length;
    var argv=gCopyLinks.GetLinks.arguments;
    var-reMask;
    var selLinks=[];
    对于(i=0;i
    不,它与
    EOL
    函数无关-此函数仅确定所用操作系统的行尾字符序列。扩展的覆盖调用
    gCopyLinks.OnCommand('all'))
    如果单击了它的菜单项,我想您也需要添加一个按钮。请参见“在扩展中添加工具栏按钮”

    在转换附加组件时,除了跨浏览器兼容性之外,还有什么需要注意的吗


    是的。扩展具有web内容所没有的特权。特别是,目前没有允许web应用程序将数据复制到剪贴板的API。但是,如果“反向工程”一词让任何人感到不安,则只有一个API是和。

    请告诉我,我会重新编写问题Command dispatcher和commandDispatcher.focusedWindow似乎无法转换成简单的网页脚本。我猜这就是问题所在。
    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++;
            }
        }
    
    }