Как я могу изменить текст в расширении контекстного меню Safari - PullRequest
1 голос
/ 12 марта 2011

Я новичок в javascript и написании расширений, поэтому мне нужна ваша помощь.

Я пытаюсь создать пункт контекстного меню Safari, который позволит пользователю изменять введенный текст, когда он выбирает часть или весь текст в окне ввода (например, тот, который я задаю в ).
У меня это частично работает, мое расширение отображается в контекстном меню, и при щелчке по нему вызывается мой global.html файл, который, в свою очередь, вызывает мой Конечный скрипт, inject.js, файл, который выглядит следующим образом:

function handleMessage(event) {
  var range = window.getSelection();//.getRangeAt(0);
   console.log("range:"+range);
  var selectionParentText = range.startContainer.textContent;
  range.startContainer.textContent = selectionParentText.substring(0,range.startOffset) + "[b]" + range.toString() + "[/b]" + selectionParentText.substring(range.endOffset,selectionParentText.length);
}

safari.self.addEventListener("message", handleMessage, false);

В журнале отображается значение выбранного текста, но в 4-й строке выдается ошибка TypeError: Result of expression 'range.startContainer' [undefined] is not an object.. Как правильно изменить выделенный текст?

1 Ответ

0 голосов
/ 14 марта 2011
function handleMessage(event) 
{
  var e = document.activeElement;
  if (e.tagName = "textarea")
  {
    var selLen = e.selectionEnd - e.selectionStart;
    e.value = e.value.substr(0, e.selectionStart) + "[b]" + e.value.substr(e.selectionStart, selLen) + "[/b]" + e.value.substr(e.selectionEnd, e.value.length);
  }
}

safari.self.addEventListener("message", handleMessage, false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...