2

情况

我需要自动将 HTML 链接复制到在当前 Firefox 选项卡中查看的当前页面到其他所见即所得编辑器中。这与仅复制 URL 的纯文本不同,也与仅粘贴网页标题的纯文本相同。这也不同于导航到具有指向感兴趣页面的 HTML 链接的其他网页,用鼠标光标选择文本,然后键入 CTRL-C 将其复制到当前操作系统剪贴板(Linux和 Windows,不应该有任何区别)。只有剪贴板的更新是自动化的;从剪贴板粘贴到目标应用程序将手动完成。

所需的用例如下

  1. 用户从 Firefox 中浏览到任何网页。
  2. 用户键入一些与标准 Firefox 内置键绑定不冲突的用户指定键序列。
  3. 然后,Firefox 将只执行Copy Link Bookmarklet的部分 功能:而不是打开一个新的单独窗口/选项卡并为链接构建和呈现 HTML,然后要求用户在选择链接并将其复制到剪贴板时浪费动作,然后扩展程序将格式化 HTML 本身并将其直接复制到剪贴板中。
  4. 然后,用户选择下面描述的任何目标并键入 CTRL-V 以粘贴格式化的文本。
  5. 然后用户将链接视为该目标区域中的链接,并且 看不到任何文字http://...

例如,如果浏览的网页是http://www.google.com,并且用户单击了用户定义的键序列,并且如果用户将其粘贴到某个 Google 文档中,那么他们在该文档中看到的 不是 http://www.google.com他们也不会看到Google,而是会看到您在 Web 浏览器中的 StackOverflow 中阅读此内容时会看到的内容:Google

现在,有 Firefox 扩展程序和书签工具接近了,但它们都没有减少鼠标移动和/或按键开销,这是这种频繁出现的用例中最浪费时间的方面。我对现有扩展的搜索结果没有完全满足我的需求(请参阅下面的研究部分)。因此,我认为我可能需要推出自己的扩展(或修改现有扩展),除非有人可以将我指向提供此功能的现有扩展。

我想到的扩展应该可以在 Linux 或任何版本的 Windows 上运行的 Firefox 版本 11 或更高版本中运行。只需要 Firefox 和合适的 Firefox 扩展,不需要任何其他特殊软件。

粘贴的目标应该是:

  1. GMail 撰写文本区域
  2. 谷歌文档
  3. 微软 Word 文档
  4. Microsoft Outlook 撰写文本区域。
  5. 任何其他所见即所得编辑器,例如 Blogger 帖子编辑器。
  6. 记事本(在这种情况下,仅粘贴网页标题而不是 URL,或者将网页标题和 URL 作为单独的纯文本粘贴;无论哪种方式)。

关于用户指定的键绑定:如果已经有一个扩展完成了上述操作,但没有提供将键绑定绑定到它的能力,那么我希望能够使用keyconfig 扩展扩展来处理该方面。实际上,这甚至可能更可取。我还不知道。

研究

以下是我调查的接近我想要的方法,但并不完全满足需要:

  1. 黑客复制链接书签将不起作用,因为据我所知,无法从书签更新操作系统的剪贴板,因此我认为需要 Firefox 扩展。
  2. 在 Firefox 扩展中,如何将富文本/链接复制到剪贴板?
  3. 3 个 FireFox 插件,用于更轻松地复制链接和锚文本——列出的扩展都没有我想要的,因为它们迫使你使用鼠标右键并向下导航一到两级上下文菜单,这是浪费的动作。
  4. 复制链接文本 (CoLT) - CoLT 还支持将超链接及其关联文本复制为富文本格式的链接,但它不包括默认键绑定。看起来其他人正试图将 keyconfig 绑定到 CoLT,这可能是一种解决方案。
  5. Copy URL Plus - 看起来它具有复制到剪贴板的逻辑,但看起来它自 Firefox 1.x 时间框架以来就没有得到维护。
4

1 回答 1

2

我正在回答我自己的问题:

在此处输入图像描述如果keynailkeyconfig都安装到同一个 Firefox 浏览器中,CTRL-SHIFT-F11绑定将静默停止工作。对我来说,解决方法是简单地卸载keysnail,因为我不使用它。

我实际上不需要编写自己的 Firefox 扩展,但我确实需要从复制链接文本 (CoLT)扩展中删除一些复制富文本链接的代码,并将其作为绑定直接应用到keyconfig扩展中,如下所示:

  1. 安装keyconfig扩展。
  2. 重启火狐。
  3. Firefox 加载后,键入CTRL-SHIFT-F12以调出keyconfig配置菜单。
  4. 在页面底部,单击添加新密钥按钮。
  5. 名称字段中,输入一些合适的名称,例如Copy Rich Text Link to Current Page.
  6. 输入以下 Javascript 代码块(这段代码是我从复制链接文本 (CoLT)扩展名内的 文件中的objCoLT.CopyBoth函数中提取的):content/colt.js

    var url = content.document.location.href;
    var text = content.document.title;
    
    // Use the users selection instead of the title if text is selected:
    var selection = document.commandDispatcher.focusedWindow.getSelection().toString();
    if (selection != "")
    {
        text = selection;
    }
    
    var richText = "<a href=\"" + url + "\">" + text + "</a>";
    
    var xfer = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
    xfer.addDataFlavor("text/html");
    
    var htmlString = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
    htmlString.data = richText;
    xfer.setTransferData("text/html", htmlString, richText.length * 2);
    
    var clipboard = Components.classes["@mozilla.org/widget/clipboard;1"].getService(Components.interfaces.nsIClipboard);
    clipboard.setData(xfer, null, Components.interfaces.nsIClipboard.kGlobalClipboard);
    
  7. 单击确定。

  8. 返回主 Keyconfig 对话框,<disabled>应显示在Apply按钮左侧的文本字段中。
  9. 单击该文本字段,然后键入要与其关联的键绑定,例如CTRL-SHIFT-F11.
  10. 单击应用按钮。
  11. 单击关闭按钮关闭 Keyconfig 配置对话框。

要对此进行测试,请执行以下操作:

  1. 在 Firefox 中,导航到任意页面。
  2. 输入CTRL-SHIFT-F11(或您在上面选择的任何键绑定)。
  3. 注意没有弹出对话框;这是故意的。
  4. 打开 Google 文档,然后创建一个新文档。
  5. 单击新文档,然后键入CTRL-V
  6. 您应该会看到粘贴的链接的 HTML/富文本格式。
  7. 单击链接,然后单击左侧的 URL Change
  8. 浏览器应打开与该 URL 对应的原始页面。
于 2012-03-25T18:40:15.767 回答