1

Es gibt einen Ort, wo ich will, wie JS-Skript auszuführen:Anruf JS vor Ort mit WebView

document.getElementById("statuses").rows[2].cells[1].firstChild.nodeValue 

und einiges Ergebnis. Ich habe WebView gegeben und versucht, das umzusetzen:

MainActivity.OnCreate

WebView wv = FindViewById<WebView>(Resource.Id.webView); 
wv.Settings.JavaScriptEnabled = true; 
wv.SetWebViewClient(new Client()); 
wv.LoadUrl("http://inout.test.com/"); 

Dann Cleint

public class Client : WebViewClient { 

    public override void OnPageFinished(WebView view, string url) { 
     base.OnPageFinished(view, url); 
     var script = $"javascript: document.getElementById(\"statuses\").rows[2].cells[1].firstChild.nodeValue"; 
     //view.LoadUrl($"javascript: {script}"); 
     view.EvaluateJavascript(script , new JsResult()); 
    } 
} 

Und JsResult

public class JsResult : Java.Lang.Object, IValueCallback { 

    public string Result; 
    public void OnReceiveValue(Java.Lang.Object value) { 
     Result = ((Java.Lang.String)value).ToString(); 
    } 
} 

Aber Result ist immer leer! Was mache ich falsch? Ist es möglich, Wert von JS zu erhalten? Bitte helfen Sie.

+0

'Rück 42;' zurückkehrt eine ganze Zahl/Nummer. Haben Sie sich die tatsächliche Art von "Wert" angesehen? –

+0

Ich denke, es ist egal, weil ich versucht habe, 'Hallo' anstelle von 42 zurückzugeben. Der tatsächliche Typ von 'Wert' ist' Java.Lang.Object ' –

+1

Entschuldigung mit" dem tatsächlichen Typ "meinte ich den Typ des Objekt selbst nicht von der Variable. Der Typ des Objekts ist 'Java.Lang.String'. –

Antwort

2

Wenn Sie

function() { alert('hello world'); return 42; }() 

in Chrome-Entwickler-Konsole ausführen, Sie am Ende mit

enter image description here

Sie müssen nur richtig Klammern verwenden:

(function() { alert('hello world'); return 42; })() 

Und dann siehst du e:

enter image description here

+0

Entschuldigung, mein Herr. Ich habe deine Antwort verbessert, aber es gibt einen Fehler in der Frage (mein Schlechter). Ich habe ID festgelegt. Bitte sehen und helfen. Danke und entschuldigung nochmal –

+0

hast du es in chrom ausgeführt, zuerst um zu sehen, ob es zurückgibt was du erwartest? ^^ –

+0

ja, in chrome funktioniert alles einwandfrei –