2017-09-27 8 views

Antwort

1

Die einzige API für die aktuelle Auswahl ist über die DOM selection API. Es ist ein wenig umständlich, Zugriff auf das DOM in WebKitGTK + zu erhalten, da die DOM-Repräsentation im Speicher des Webprozesses existiert, der vom Anwendungsprozess mit dem WebKit.WebView-Widget getrennt ist.

Zur Überbrückung zwischen den beiden, können Sie WebKit.WebView.run_javascript() aufrufen und den entsprechenden JavaScript-Code durch im Web-Prozess ausgeführt werden passieren, so etwas wie:

web_view.run_javascript("window.getSelection().getRangeAt(0).toString()") 

diese Methode zu verwenden, müssen Sie vala verwenden 0.38, oder importieren Sie die JavaScriptCore-VAPI in Ihr eigenes Projekt (wie es bei Geary der Fall ist), damit Sie herausfinden können, was der Rückgabewert ist.

Beachten Sie auch, dass Sie wahrscheinlich einige Prüfungen hinzufügen möchten: dass mindestens ein Bereich im DOM-Auswahlobjekt vorhanden ist, und so weiter.

+1

Vielen Dank, ich hatte bereits mit WebKit.WebView.run_javascript() als Fallback begonnen und die Javascript-Funktion verwendet, die hier beschrieben wird [https://stackoverflow.com/questions/5379120/get-the-highlighted-selected-text ] zum Abrufen von Auswahltext. Anschließend wurde der Wert aus dieser Funktion verwendet, um den Dokumenttitel festzulegen, der mit der WebView.get_title() -Methode abgerufen werden kann. Schade, dass ein mehr natives gtk-Steuerelement nicht ohne weiteres für den DOM-Zugriff verfügbar ist. Akzeptieren Sie dies als Antwort. –

+0

Ah ja, ich hatte den alten Settitel vergessen/Titeltrick bekommen. Dies ist sicherlich die einfachste Problemumgehung, wenn JavaScriptCore in früheren vala-Versionen nicht enthalten ist. –

Verwandte Themen