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 № 1window.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();
}