Chrome扩展:用剪贴板数据替换文本区域中的选定文本

Chrome Extension: Replace selected text in textarea with clipboard data

本文关键字:文本 区域 替换 扩展 剪贴板 数据 Chrome      更新时间:2023-09-26

我很难将文本插入HTML文本区域,或者使用Chrome扩展(使用上下文菜单)从剪贴板中获取数据。

我目前在manifest.json文件中拥有以下权限:

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

我的javascript技能仍然很初级,但尽管花了很长时间在SO上,我似乎无法克服document.execCode("粘贴")或在文本框中插入文本所需的特定语法的安全问题。

从程序上讲,这就是我想象的功能:

  1. 在当前文本区域中获取所选字符串,并将其复制到变量"orig_str"
  2. 如果是字符串,则获取当前剪贴板并将其存储在变量"clip_str"中。如果不是,请将变量设置为无
  3. 用覆盖当前文本区域中的原始选定字符串"orig_str+clip_str"

因此,如果文本区域包含:

I eat peas

剪贴板包含:

 and cook

并且用户选择了"吃",然后该功能被激活,文本区域中的字符串将变为:

I eat and cook peas

如果有任何正确的帮助,我们将不胜感激,最好使用直接的JS而不是JQuery。

我不知道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);

我在这里的扩展中使用了这样的东西:https://github.com/horejsek/specialCharacters.我希望这能有所帮助。