2016-12-24 3 views
0

Ich möchte einen Javascript-Wert von der Seite lesen, aber wie?Wie kann ich Javascript-Variable mit Awesomium lesen? C++

std::string jscript("[appdata]"); 
    JSValue value = view_->web_view()->ExecuteJavascriptWithResult(WSLit(jscript.c_str()), WSLit("")); 
    JSArray& arr = value.ToArray(); 
    std::string appdata = arr[0].ToString; 

Wenn ich versuche, das ich Awesomium :: JSValue :: ToString bekommen zu verwenden: Nicht-Standard-Syntax; Verwendung ‚&‘ ein Zeiger auf ein Element erstellen

TBH habe ich keine Ahnung, wo setzen &

Antwort

0

Meine C++ eher rostig ist, aber nicht müssen Sie Klammern am Ende hinzufügen?

std::string appdata = arr[0].ToString(); 

Wie es aussieht, scheint der Code zu versuchen, einen Zeiger auf eine Member-Funktion ToString zu erhalten und weisen Sie :: string Variable std.

+0

Nun, habe ich versucht, diese und hier ist das Ergebnis: ** Awesomium :: WebString 'auf' std :: basic_string , std :: allocator > keine geeignete benutzer- Definierte Konvertierung von "Awesomium :: WebString" nach "std :: string" existiert ** – bugraarslan

+0

Also meine Beobachtung war richtig: Sie haben den Funktionszeiger anstelle eines Wertes/Objekts zugewiesen. :) –

0

Nun, hier ist die Antwort für die Zukunft wonderers:

JSValue MyValue = view_->web_view()->ExecuteJavascriptWithResult(WSLit("appdata"), WSLit("")).ToString(); 
    WebString asd(MyValue.ToString()); 
    std::string appdata = ToString(asd); 
0

Versuchen Wechsel:

std::string appdata = arr[0].ToString; 

zu

Awesomium::WebString appdata = arr[0].ToString(); 

Als Mike Klimentiev sagte, sind die Zuweisung Sie die Methode ToString zu den Variablen appdata. Wenn Sie die Klammern hinzufügen, wird anstelle der direkten Zuweisung der Funktion an die Variable ein Funktionsaufruf ausgeführt.

Wenn Sie die Klammern hinzufügen, weist die Compiler-Fehlermeldung außerdem darauf hin, dass der Typ "Awesomium :: WebString" den Typ "std :: string" nicht konvertieren kann. Am Anfang der Zeile haben Sie std::string appdata Dies deklariert eine Variable appdata des Typs std::string. Doch die Methode ToString(), um eine Art von Awesomium::WebString, für die gibt es keine Umstellung auf den Typ std::string

EDIT: @bugraarslan auf Erfahrung Basierend, würde ich vorsichtig Ihre Problemumgehung sein. Es gibt keine einfache Konvertierung zwischen den beiden Typen, weil sie keinen geschrieben haben. Normalerweise bedeutet dies, dass Sie entweder den Typ Awesomium::WebString verwenden oder die Bibliothek mit einem bekannten Typ bekämpfen können, nämlich std::string. Bibliotheken ermüden nicht in ihrer Sturheit, aber tun Sie, wie Sie bitte

Ich habe nicht genug Ruf zu kommentieren. Also musste ich meine Antwort stattdessen ändern.

Verwandte Themen