1

Ich erstelle ein IE-Browser-Plug-In, das aktualisiert werden muss, wenn der Text vom Benutzer ausgewählt wurde oder wenn überhaupt kein Text ausgewählt wurde. Ich habe gelernt, wie man den ausgewählten Text unter reading here bekommt. Dies ist mein Code dafür:Probleme beim Abrufen von ausgewähltem Text aus dem IE-Browser

 
var doc = browser.Document as IHTMLDocument2; 
var selection = doc.selection as IHTMLSelectionObject; 
var range = selection.createRange() as IHTMLTxtRange; 
string selectedText = range.text; 

aber ich habe Schwierigkeiten, das Event-Handler-Bestimmung (en), von dem Range.Text zugreifen zu meinem Plug-in aktualisieren. Die Verwendung des Selectionchange-Ereignisses allein funktioniert nicht in allen Fällen. Wenn der Benutzer den Text abliest, indem er direkt auf die Auswahl klickt, anstatt auf einen anderen Teil der Webseite zu klicken, enthält range.text immer noch den alten (nicht null) Wert, wenn selectionchange ausgelöst wird. Eine Problemumgehung besteht darin, auch auf Klickereignisse zu warten. Ein Klick-Ereignis wird unmittelbar nach der Auswahländerung ausgelöst, aber an diesem Punkt ist range.text schließlich null. Ich bin jedoch auf ein weiteres Problem gestoßen, für das ich keine Lösung gefunden habe. Das heißt, wenn ein Benutzer auf ein Wort doppelklickt und es so auswählt, wird das Auswahländerungsereignis überhaupt nicht ausgelöst. Wenn das click-Ereignis (oder mousedown-Ereignis oder selectstart-Ereignis) ausgelöst wird, ist range.text immer noch null!

Wie kann ich dieses letzte Problem lösen? Oder gibt es einen insgesamt besseren Ansatz, den ich nehmen kann?

Antwort

1

Versuchen Sie, das Ereignis ondragent für die einfache Auswahl und das Ereignis ondblclick für die Doppelklickauswahl zu verwenden. Wenn es nicht funktioniert, versuchen Sie, einige Ereignisse zu kombinieren (http://javascript.gakaa.com/c/events.aspx)

+0

Mit dem dblclick-Ereignis wurde das Problem für die Doppelklick-Auswahl eines einzelnen Wortes gelöst. Danke, dass du dieses Ereignis aufzeigst - ich habe es wahrscheinlich aufgrund der fehlenden Vokale nicht bemerkt. Jemandes Tastatur bei Microsoft war anscheinend kaputt. Was das Ereignis ondragend anbelangt, ist es tatsächlich nicht anwendbar, da die Auswahl des Ziehvorgangs keine DnD-Operation ist. In meinem Programm route ich jetzt alle drei Ereignisse - selectionchange, click und dblclick - an denselben Handler, der den Wert von range.text speichert. – HappyNomad

Verwandte Themen