Android webView - 没有调用 javascript 代码

我尝试在我的 webview 中加载这个 javascript:


@SuppressLint("ClickableViewAccessibility")

@Override

protected void onCreate(Bundle savedInstanceState)

{

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_fullscreen);


    website = "https://www.blizz-z.de";

    myWebView = findViewById(R.id.blizzView);


    WebSettings settings = blizzView.getSettings();

    settings.setJavaScriptEnabled(true);


    myWebView.setWebViewClient(new WebViewClient() {


        @Override

        // Notify the host application that a page has finished loading.

        public void onPageFinished(WebView view, String url)

        {

            myWebView.loadUrl(

                    "javascript:(function() {" +

                        "setInterval(function() {" +

                            + "jQuery('#myInput').css('background', '#'+(Math.random()*0xFFFFFF<<0).toString(16));"

                        + "}, 1000);"

                    + "});"

            );

        }

    }


    ...


}

但它没有被执行。如果我在桌面浏览器中执行该脚本,则它可以工作。它仅出于测试目的更改了我网站上搜索栏的背景颜色。


是setInterval不是在web视图支持?


慕田峪9158850
浏览 187回答 2
2回答

萧十郎

您是否在 API 19 或更高版本上部署?如果是这样,你将不得不使用WebView#evalulateJavascript而不是WebView#loadUrl我总是使用这种方法来简化和加快速度public void js(String code) {&nbsp; &nbsp; if (Build.VERSION.SDK_INT >= 19) {&nbsp; &nbsp; &nbsp; &nbsp; this.evaluateJavascript(code, new ValueCallback<String>() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public void onReceiveValue(String response) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; this.loadUrl("javascript:" + code);&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript