Javascript并不总是在WebView中工作

时间:2016-11-22 09:02:15

标签: javascript android jquery webview

我想在WebView中打开一个网页,并在页面加载后自动点击按钮。这是我目前的WebView课程:

public class WebViewFragment extends Fragment {

    ...

    @Override
    public void onResume() {
        super.onResume();
        openUrl();
    }

    private void openUrl() {
        setCookies();
        if (urlToOpen != null) {
            //tell webview to handle redirects (by default browser launches on redirects)
            webview.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageStarted(WebView view, String url, Bitmap favicon) {
                    super.onPageStarted(view, url, favicon);

                    if (getActivity() != null)
                        ((MainActivity) getActivity()).onShowLoading();
                }

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

                    if (getActivity() != null) {
                        executeJS();
                        ((MainActivity) getActivity()).onHideLoading();
                    }
                }
            });
            if (javascriptToExecute != null) {
                webview.getSettings().setJavaScriptEnabled(true);
            }
            webview.loadUrl(urlToOpen);
        }

    }

    private void executeJS() {
        System.out.println("executeJS(): " + javascriptToExecute);
        webview.loadUrl(javascriptToExecute);
    }    
}

我可以使用"javascript:$('#customer-info-edit').click();""javascript:document.getElementById('customer-info-edit').click();"都可以正常使用。

但问题是他们只工作一次。如果我是第一次打开WebView,则单击该按钮。但是,如果我按下物理后退按钮并再次打开WebView,则不会单击该按钮。为什么Javascript每次都不工作?

1 个答案:

答案 0 :(得分:0)

我不知道究竟是什么问题,但我找到了一个有效的解决方案:在执行javascript之前添加500毫秒的延迟。