使用WebView在现场调用JS

Call JS on site using 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/");

然后 克莱因特

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 中获取价值?请帮忙。

如果你执行

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

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

你只需要使用正确的括号:

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

然后你会看到: