听webView.loadurl

时间:2015-10-30 16:57:46

标签: javascript java android webview

我正在尝试加载页面,然后按以下方式执行javascript代码:

 webview.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageFinished(WebView view, String url) {
                //first javascript code 
                webview.loadUrl("javascript:window.HtmlViewer.done" +
                        "('<html>'+document.getElementsByTagName('video')[0].pause()+'</html>');");
                Log.i("f", "finish");



        }
    });

        webview.loadUrl("https://www.example.com/...."); 

我点击它时有一个按钮,它将执行以下代码:

public void star (View v) {
        webview.loadUrl("javascript:window.HtmlViewer.showHTML" +
                "('<html>'+document.getElementsByTagName('video')[0].getAttribute(\"src\")+'</html>');");
}

但问题是src属性在执行第一个javascript代码之前是不可用的我需要做的是听取第一个javascript代码的执行,一旦完成设置按钮启用

我试图在onCreate方法中设置禁用按钮,然后执行以下操作

class MyJavaScriptInterface {
    @SuppressWarnings("unused")

    private Context ctx;

    MyJavaScriptInterface(Context ctx) {
        this.ctx = ctx;
    }
    @JavascriptInterface
    public void showHTML(String html) {
      //some code
    }
    @JavascriptInterface
    public void done(String html ){
       b.setEnabled(true);
    }

} 

但它无法正常工作,我该怎么办?

1 个答案:

答案 0 :(得分:0)

尝试拆分done()调用和其他操作 - 将其放在最后。我建议为此创建额外的功能,如下所示:

  Java中的

@Override
    public void onPageFinished(WebView view, String url) {
        //first javascript code 
        webview.loadUrl("javascript:firstJsWork()");
    }
  JS中的

function firstJsWork(){
    // your code to process in html
    .......
    // call done in Java
    AndroidInterface.done();
}

多数民众赞成保证,完成所有工作后将完成调用。检查一下。