在Android WebView中运行Javascript - onPageFinished循环

时间:2015-04-01 15:33:00

标签: javascript android json webview

我在使用onPageFinished方法让我的应用程序在页面上正确运行某些JS时遇到了一些麻烦。

下面的代码包含在我创建的类中,该类扩展了AsyncTask以获取和解析其他地方保存的JSON文件。

我能够正确获取JSON文件,解析数据并获取并设置WebView的URL。在尝试使用onPageFinished方法运行某些JS之前,所有内容都会正常工作。

        //onPostExecute method runs when the doInBackground method is completed
    @SuppressLint("SetJavaScriptEnabled")
    @Override
    protected void onPostExecute(Boolean aBoolean) {
        super.onPostExecute(aBoolean);

        //Casting as WebView as findViewById doesnt explicity return a value type.
        webView = (WebView) findViewById(R.id.webView);

        //Obtaining the websettings of the webView
        WebSettings webViewSettings = webView.getSettings();

        //Setting Javascript enabled
        webViewSettings.setJavaScriptEnabled(true);

        webView.setWebViewClient(new webViewClient(){
            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);


                webView.loadUrl("document.getElementById('field_133').value = 'Test';");
                Log.d("onPageFinished", "The Page has finished loading");

            }
        });

        //Obtaining the first item in the cellRef List Array - From here we will access the Url data for the train operator.
        parsedUrl = cellRef.get(0).getUrl();

        //load the page we parsed from online file
        webView.loadUrl(parsedUrl);
        Log.d("loadUrl", "Now load the parsed Url");



    }

我现在要做的就是测试一旦页面加载了"测试"的值,JS就可以正确地填充文本框。 - 但是,WebView似乎陷入了一个加载和循环的循环中。在尝试运行时刷新(看到&#34的重复logcat打印;页面已完成加载"):

webView.loadUrl("document.getElementById('field_133').value = 'Test';");

这是尝试将一些JS注入Android中的WebView的正确方法吗?抱歉,如果有明显缺失的东西,我的大部分经验都在于Swift。

任何帮助都将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

在代码之前尝试“javascript:”。 我用它,效果很好:

loadUrl("javascript:(function() { document.getElementsByTagName('video')[0].play(); })()");