Chrome扩展程序:将textarea中的选定文本替换为剪贴板数据

时间:2012-01-03 06:27:15

标签: javascript google-chrome google-chrome-extension textarea clipboard

我有一段时间试图将文本插入HTML文本区域,或者使用Chrome扩展程序从剪贴板中获取数据(使用上下文菜单)。

我目前在manifest.json文件中拥有这些权限:

"permissions": [
  "contextMenus",
  "clipboardRead",
  "clipboardWrite"],

我的javascript技能仍然非常基础,但是尽管花费了一段时间,我似乎无法克服document.execCode('paste')的安全问题或我在文本框中插入文本所需的特定语法

以编程方式,这是我想象的功能:

  1. 在当前文本区域中获取所选字符串并复制到a 变量“orig_str”。
  2. 如果是字符串,请获取当前剪贴板和 将其存储在变量“clip_str”中。如果没有,请将变量设置为空。
  3. 用当前textarea覆盖原始选定的字符串 “orig_str + clip_str”。
  4. 所以如果textarea包含:

    I eat peas
    

    并且剪贴板包含:

     and cook
    

    并且用户选择了“eat”,然后该函数被激活,textarea中的字符串将被更改为:

    I eat and cook peas
    

    正确的道路上的任何帮助都会受到赞赏,最好使用直接的JS而不是JQuery。

2 个答案:

答案 0 :(得分:0)

我在我的扩展程序中使用了类似的内容:https://github.com/horejsek/specialCharacters。我希望这有帮助。

答案 1 :(得分:0)

我不知道Chrome扩展程序如何访问剪贴板,所以我想你在clipboard变量中有剪贴板字符串。然后,您可以通过window.getSelection功能

在浏览器中阅读所选文本
var selection = new window.getSelection,
    selectedText = selection.anchorNode.data,
    textarea = window.document.querySelector('textarea');

休息很简单只需两个字符串:

textarea.value = textarea.value.replace(selectedText, clipboard);