/ / dlaczego wybrany tekst nie pojawia się? - javascript, dom, firefox-addon, xul, dodatek

dlaczego wybrany tekst nie pojawia się? - javascript, dom, firefox-addon, xul, dodatek

cześć mam problem z moimi pierwszymi dodatkami .. za pomocą tej funkcji staram się wybrać słowo na stronie internetowej

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);
}

w moim xul wykonuję powyższą funkcję w następujący sposób:

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

ale dlaczego nie mogę wyświetlić tego słowa po wybraniu słowa na stronie (wyskakujące okienko jest puste) ..

Odpowiedzi:

0 dla odpowiedzi № 1

window.getSelection() zwraca zaznaczenie z okna chrome, które prawie zawsze jest puste. Jak odkryłeś, musisz użyć document.commandDispatcher.focusedWindow aby dowiedzieć się, które okno ma aktywny wybór. (Jeśli jesteś leniwy, mogłeś spróbować content.getSelection() ale działa to tylko wtedy, gdy strona nie ma ramek).


0 dla odpowiedzi nr 2

Być może do tego czasu to się dzieje click ogień zdarzeń na XUL <menuitem>, kliknięcie go zniszczyło zaznaczenie na stronie. Spróbuj użyć mousedown zamiast tego zdarzenie (tj. zmiana onclick do onmousedown).

Ponadto getSelected() funkcja jest niepotrzebnie złożona. Ponieważ Twój kod musi działać tylko w przeglądarce Firefox, możesz użyć:

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