2010-12-19 7 views
0

Hallo, ich habe ein Problem mit meinem ersten Addons .. ich versuche, das Wort auf der Website Seite mit dieser FunktionWarum wird der ausgewählte Text nicht angezeigt?

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

in meinem xul i über die Funktion ausführen wählen mit dieser Art und Weise:

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

aber, warum ich das Wort kann nicht angezeigt werden, wenn i Wort auf Seite auswählen (das Pop-up ist leer) ..

Antwort

0

window.getSelection() gibt die Auswahl aus dem Chrome-Fenster, die fast immer leer. Wie Sie herausgefunden haben, müssen Sie document.commandDispatcher.focusedWindow verwenden, um herauszufinden, welches Fenster die aktive Auswahl hat. (Wenn Sie faul sind, haben Sie vielleicht versucht content.getSelection(), aber das funktioniert nur, wenn die Seite keine Frames hat.)

0

Möglicherweise wird zu dem Zeitpunkt, zu dem das Ereignis click auf dem XUL <menuitem> ausgelöst wird, durch das Klicken darauf die Auswahl auf der Seite zerstört. Versuchen Sie stattdessen, das Ereignis mousedown zu verwenden (d. H., Ändern Sie onclick in onmousedown).

Auch die getSelected() Funktion ist unnötig komplex. Da der Code nur in Firefox arbeiten muss, können Sie verwenden:

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

@ Tim Down: es funktioniert immer noch nicht, wenn ich window.getSelection(). ToString(); aber wenn ich versuche, document.commandDispatcher.focusedWindow.getSelection(). toString(); und es funktioniert. Warum kann das ausgewählte Wort nicht auf die erste Art und Weise erscheinen? – user495688

+0

@ user495688 arbeiten Sie wirklich mit einem einzigen Fenster? Der Code 'window == document.commandDispatcher.focusedWindow' gibt wahr oder falsch aus? –

+0

@ Tom Barito: es funktioniert ..: D – user495688