在Firefox中在光标位置插入文本的Javascript代码? 用例

在Firefox中在光标位置插入文本的Javascript代码? 用例,javascript,firefox,firefox-addon,Javascript,Firefox,Firefox Addon,当我在搜索引擎中输入一个查询时,有时引用是很有用的 这是查询的一部分,因此引擎不会用无用的建议来打扰我 任务 这个操作非常频繁,我想用一个快捷方式来完成。 快捷方式部分不是问题所在,有一种方法可以将快捷方式指定给bookmarklet。 我不知道该怎么做 获取当前文本区域。我只知道光标在那里。 我不能假设任何ID等,我也不想安装任何挂钩 插入“”,并向后返回一个字符 我希望有一个1/2行程序可以放在bookmarklet中。解决方案 因为没人想回答,而我只是JavaScript的新手, 我决定看

当我在搜索引擎中输入一个查询时,有时引用是很有用的 这是查询的一部分,因此引擎不会用无用的建议来打扰我

任务 这个操作非常频繁,我想用一个快捷方式来完成。 快捷方式部分不是问题所在,有一种方法可以将快捷方式指定给bookmarklet。 我不知道该怎么做

  • 获取当前文本区域。我只知道光标在那里。 我不能假设任何ID等,我也不想安装任何挂钩
  • 插入“”,并向后返回一个字符
  • 我希望有一个1/2行程序可以放在bookmarklet中。

    解决方案 因为没人想回答,而我只是JavaScript的新手, 我决定看看是否有一个插件,做接近我想要的。 选择权落在了, 反正我也在用

    返回一个字符的代码本身就是简单性:

    goDoCommand('cmd_charPrevious');
    
    但是,插入文本的命令不起作用。 但粘贴的命令也很简单:

    goDoCommand('cmd_paste');
    
    现在只剩下把“.”放在剪贴板上了。这个不容易:

    var str = Components.classes["@mozilla.org/supports-string;1"]
        .createInstance(Components.interfaces.nsISupportsString);
    str.data = '""';
    
    var trans = Components.classes["@mozilla.org/widget/transferable;1"]
        .createInstance(Components.interfaces.nsITransferable);
    trans.addDataFlavor("text/unicode");
    trans.setTransferData("text/unicode",str, str.data.length * 2);
    
    var clipid = Components.interfaces.nsIClipboard;
    var clip = Components.classes["@mozilla.org/widget/clipboard;1"]
        .getService(clipid);
    clip.setData(trans,null,clipid.kGlobalClipboard);
    
    然后,我只是将此代码修补到扩展中,而不是“Ctrl-h”绑定, 我不用它。问题解决了。现在我可以在Firefox中快速插入一对引号