почему выделенный текст не появляется? - PullRequest
0 голосов
/ 19 декабря 2010

привет, у меня проблема с моими первыми аддонами .. я пытаюсь выбрать слово на странице веб-сайта с помощью этой функции

function getSelected() {
   var userSelection;
   if (window.getSelection) {
      userSelection = window.getSelection();
   } else if (document.selection) {
       userSelection = document.selection.createRange();
   }
   return userSelection;
}

function getText() {
 var select = getSelected()+ "";
  alert(select);
}

в моем xul я выполняю вышеуказанную функцию следующим образом:

    <menuitem id="inlinetransContextMenuPage"
     label="Terjemahkan dengan inlinetrans"
     onclick="overlay.getText()" />
</popup>

но почему слово не появляется, когда я выбираю слово на странице (всплывающее окно пустое) ..

Ответы [ 2 ]

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

window.getSelection() возвращает выбор из окна Chrome, которое почти всегда пусто.Как вы обнаружили, вам нужно использовать document.commandDispatcher.focusedWindow, чтобы узнать, какое окно имеет активный выбор.(Если вы ленивый, вы могли бы попробовать content.getSelection(), но это работает, только если на странице нет фреймов.)

0 голосов
/ 19 декабря 2010

Возможно, происходит то, что к тому моменту, когда событие click срабатывает на XUL <menuitem>, нажатие на него уничтожает выбор на странице. Попробуйте вместо этого использовать событие mousedown (т. Е. Изменить onclick на onmousedown).

Кроме того, функция getSelected() слишком сложна. Поскольку ваш код должен работать только в Firefox, вы можете использовать:

function getSelected() {
    return window.getSelection().toString();
}
...