Расширение Chrome: замена выделенного текста в текстовой области данными буфера обмена - PullRequest
1 голос
/ 03 января 2012

У меня чертовски много времени пыталось вставить текст в текстовую область HTML или получить данные из буфера обмена с расширением Chrome (используя контекстное меню).

В настоящее время у меня есть эти разрешения вмой файл manifest.json:

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

Мои навыки работы с javascript все еще довольно элементарны, но, несмотря на то, что я потратил довольно много времени на SO, я не могу преодолеть проблемы безопасности с помощью document.execCode ('paste') иликонкретный синтаксис, который мне требуется для вставки текста в текстовое поле.

Программно это то, что я представляю себе, что функция будет делать:

  1. Получить выбранную строку в текущей текстовой области ископировать в переменную "orig_str".
  2. Если строка, получите текущий буфер обмена и сохраните его в переменной "clip_str".Если нет, установите для переменной значение none.
  3. Перезапишите исходную выбранную строку в текущей текстовой области с помощью "orig_str + clip_str".

Так что, если текстовая область содержит:

I eat peas

и буфер обмена содержал:

 and cook

и пользователь выбрал «поесть», затем функция была активирована, строка в текстовой области будет изменена на:

I eat and cook peas

Буду признателен за любую помощь по правильному пути, желательно с прямым JS, а не JQuery.

Ответы [ 2 ]

0 голосов
/ 14 января 2012

Я не знаю, как расширения 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);
0 голосов
/ 14 января 2012

Что-то вроде этого я использую в своем расширении здесь: https://github.com/horejsek/specialCharacters. Надеюсь, это поможет.

...