使用WebView

时间:2016-10-12 11:50:32

标签: javascript android xamarin xamarin.android android-webview

有一个网站我想运行JS脚本,如:

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

得到一些结果。我已添加WebView并尝试实施:

MainActivity.OnCreate

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

然后 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());
    }
}

JsResult

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

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

Result总是空的!我做错了什么?是否有可能从JS获得价值?请帮忙。

1 个答案:

答案 0 :(得分:2)

如果你执行

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

在Chrome开发者控制台中,您最终得到了

enter image description here

您只需使用正确的括号:

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

然后你看:

enter image description here