【问题标题】:Firefox Extension that copies HTML link to current web page to clipboard and not just the URL将当前网页的 HTML 链接复制到剪贴板的 Firefox 扩展,而不仅仅是 URL
【发布时间】:2025-12-26 11:00:12
【问题描述】:

情况

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

想要的use case如下:

  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,而是 会看到当您在 * 中阅读此内容时会看到的内容 网络浏览器:Google

现在,有 Firefox 扩展程序和书签工具接近了, 但它们都没有减少鼠标运动和/或按键的净减少 开销,这是最浪费时间的方面 发生use case。我对现有扩展的搜索变成了 没有什么能完全满足我的需求(见研究部分 以下)。因此,我认为我可能需要推出自己的扩展(或 修改现有的),除非有人可以将我指向现有的 提供此功能的扩展程序。

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

粘贴的目标应该是:

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

关于用户指定的键绑定:如果已经有扩展 做了上述但没有提供绑定的能力 对其进行键绑定,那么我希望能够使用keyconfig extension 扩展来处理该方面。其实这可能 甚至更可取;我还不知道。

研究

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

  1. Copy Link Bookmarklet 进行黑客攻击是行不通的,因为据我所知,无法从书签更新操作系统的剪贴板,因此我认为需要 Firefox 扩展。
  2. In a Firefox extension, how can I copy rich text / links to the clipboard?
  3. 3 FireFox Addons to Easier Copy Links and Anchor Texts -- 列出的所有扩展都没有做我想要的,因为它们迫使您使用鼠标右键并向下导航一两级上下文菜单,这是浪费的动作。
  4. Copy Link Text (CoLT) -- CoLT 还支持复制超链接及其关联文本作为富文本格式的链接,但它不包括默认键绑定。看起来 someone else 正在尝试将 keyconfig 绑定到 CoLT,这可能是一种解决方案。
  5. Copy URL Plus -- 看起来它具有复制到剪贴板的逻辑,但看起来它自 Firefox 1.x 时间框架以来就没有得到维护。

【问题讨论】:

    标签: firefox key-bindings browser-automation clipboard-interaction


    【解决方案1】:

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

    如果keysnailkeyconfig 都安装在同一个Firefox 浏览器中,CTRL-SHIFT-F11 绑定将静默停止工作。我的解决方法是简单地卸载 keysnail,因为我不使用它。

    我实际上不需要编写自己的 Firefox 扩展程序,但我确实做到了 需要刮出一些复制富文本链接的代码 Copy Link Text (CoLT) 扩展并将其直接应用为 绑定到keyconfig扩展如下:

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

      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 对话框,&lt;disabled&gt; 应显示在 应用 按钮左侧的文本字段中。
    9. 在该文本字段中单击,然后键入要与其关联的键绑定,例如 CTRL-SHIFT-F11
    10. 点击应用按钮。
    11. 单击关闭按钮关闭 Keyconfig 配置对话框。

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

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

    【讨论】:

      最近更新 更多