Расширение Firefox: Получить выделенный текст - PullRequest
10 голосов
/ 16 июля 2009

Я работаю над простым расширением Firefox и хочу получить выбранный текст. Я попробовал это:

var WordCount = {
    /* ... */
    changeSelected: function() {
        var selectedText = this.getSelection();
        var words = this.countWords(selectedText);
        this.changeStatus(words, " selected");
        //alert(selectedText);
    },
    getSelection: function(e) {
        var focused_window = document.commandDispatcher.focusedWindow;
        var sel_text = focused_window.getSelection();
        return sel_text.toString();    
    }
}
window.addEventListener("select", function(e) { WordCount.changeSelected(); }, false);

Проблема в том, что я не могу получить выбор с помощью document.commandDispatcher.focusedWindow.getSelection () , и я не знаю почему: (

Ответы [ 3 ]

10 голосов
/ 16 июля 2009

Ваша проблема в том, что document.commandDispatcher.focusedWindow будет указывать на окно Chrome, где я подозреваю, что вы действительно хотите окно с контентом. Попробуйте заменить это на content.getSelection()

0 голосов
/ 16 июля 2009

Это обычное расширение Firefox или расширение JetPack Firefox.

В JetPack это будет

var doc = jetpack.tabs.focused.contentWindow;
if (doc.wrappedJSObject){ //This just checks if Firefox has put a XPCNativeWrapper around it for security
  win = doc.wrappedJSObject;
}

или вы можете просто получить доступ к окну напрямую с помощью window.getSelection(), как предложил dcaunt

0 голосов
/ 16 июля 2009

Это работает в JavaScript Firefox, поэтому должно быть в порядке

window.getSelection().toString();

Я предполагаю, что document.commandDispatcher.focusedWindow завершится ошибкой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...