Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firefox扩展,将当前网页的HTML链接复制到剪贴板,而不仅仅是URL 形势_Firefox_Key Bindings_Browser Automation_Clipboard Interaction - Fatal编程技术网

Firefox扩展,将当前网页的HTML链接复制到剪贴板,而不仅仅是URL 形势

Firefox扩展,将当前网页的HTML链接复制到剪贴板,而不仅仅是URL 形势,firefox,key-bindings,browser-automation,clipboard-interaction,Firefox,Key Bindings,Browser Automation,Clipboard Interaction,我需要自动将HTML链接复制到 在当前Firefox选项卡中查看到其他所见即所得编辑器。这 这与只复制URL的纯文本不同,也不是 与仅粘贴网页标题的纯文本相同。这 与导航到另一个 具有指向感兴趣页面的HTML链接,使用 鼠标光标,然后键入CTRL-C将其复制到当前操作系统中 系统剪贴板(Linux和Windows,不应使任何 差异)。只有剪贴板的更新是自动的;这个 将从剪贴板粘贴到目标应用程序中 手动 期望的结果如下: 用户从Firefox中浏览任何网页 用户键入的某些用户指定的键序列不是 与标

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

期望的结果如下:

  • 用户从Firefox中浏览任何网页
  • 用户键入的某些用户指定的键序列不是 与标准Firefox内置密钥绑定冲突
  • Firefox将只做其中的一部分 是否:而不是打开一个新的单独窗口/选项卡 构建并呈现链接的HTML,然后 要求用户在选择和复制 链接到剪贴板,然后扩展将格式化HTML 并将其直接复制到剪贴板中
  • 然后,用户选择下面描述的任何目标,并 键入CTRL-V以粘贴格式化文本
  • 然后,用户将该链接视为该目标区域中的链接,并执行以下操作: 看不到任何像
    http://...
  • 例如,如果浏览到的网页为 用户单击用户定义的键序列,如果用户粘贴 在谷歌的文档中,他们看到的是 不<代码>http://www.google.com他们也不会看到
    谷歌
    ,而是 你会看到当你在StackOverflow中以 网络浏览器:

    现在,Firefox扩展和Bookmarklet即将面世, 但它们都不涉及鼠标运动和/或按键的净减少 开销,这是此过程中最浪费时间的方面 正在发生。我对现有扩展的搜索已被禁用 没有什么能完全满足我的需求(见研究部分) 下)。因此,我认为我可能需要推出自己的扩展(或 修改一个现有的),除非有人能给我指出一个现有的 提供此功能的扩展

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

    粘贴的目标应为:

  • GMail合成文本区域
  • 谷歌文档
  • Microsoft Word文档
  • Microsoft Outlook合成文本区域
  • 任何其他所见即所得编辑器,如博客帖子编辑器
  • 记事本(在这种情况下,仅粘贴网页标题) 而不是URL,或者网页标题和URL是分开的 纯文本;任意一种方式)
  • 关于用户指定的密钥绑定:如果已经有扩展 这样做了,但没有提供绑定 键绑定到它,那么我希望能够使用扩展来处理这个方面。事实上,那可能 甚至更好;我还不知道

    研究 以下是我调查的接近我想要的方法, 但没有完全满足需要:

  • 黑客入侵不会起作用,因为据我所知,没有办法从bookmarklet更新操作系统的剪贴板,因此我认为需要Firefox扩展
  • --列出的扩展都不是我想要的,因为它们强制您使用鼠标右键并向下导航一到两级上下文菜单,这是浪费的运动
  • --CoLT还支持将超链接及其关联文本复制为富文本格式的链接,但不包括默认的键绑定。看起来else正在尝试将keyconfig与CoLT绑定,这可能是一种解决方案
  • --看起来它有复制到剪贴板的逻辑,但看起来不像是自Firefox 1.x时间段以来一直保持的

  • 我回答我自己的问题:

    如果两个和都安装在同一个Firefox浏览器中,
    CTRL-SHIFT-F11
    绑定将自动停止工作。对我来说,修复方法是简单地卸载,因为我不使用它

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

  • 安装扩展插件
  • 重新启动Firefox
  • Firefox加载后,键入
    CTRL-SHIFT-F12
    以打开配置菜单
  • 在页面底部,单击添加新键按钮
  • 名称字段中,键入一些合适的名称,例如
    将富文本链接复制到当前页面
  • 输入下面的Javascript代码块(这段代码是我写的 在
    content/colt.js
    扩展名中的文件):

    var url=content.document.location.href;
    var text=content.document.title;
    //如果选择了文本,请使用用户选择而不是标题:
    var selection=document.commandDispatcher.focusedWindow.getSelection().toString();
    如果(选择!=“”)
    {
    文本=选择;
    }
    var richText=“”;
    var xfer=Components.classes[“@mozilla.org/widget/transferable;1”].createInstance(Components.interfaces.nsinterferable);
    addDataFlavor(“text/html”);
    var htmlString=Components.classes[“@mozilla.org/supports string;1”].createInstance(Components.interfaces.nsistupsstring);
    htmlString.data=richText;
    xfer.setTra
    
    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);