2011-07-22 171 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