javascript - 监听 webView.loadurl

标签 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);
    }

} 

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

最佳答案

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

in Java:

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

in JS:

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

我向你保证,在所有工作完成后,done 将会被调用。检查一下。

关于javascript - 监听 webView.loadurl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33441146/

相关文章:

javascript - Jquery 管道传输多个结果

javascript - 向上/向下舍入公式的元素,直到结果为整数

java - 如何使用thymeleaf在页面源代码中打印mensagens?

android - 9patch drawable 1px 黑线可见&内容定位

android - 如何在二维风格中指定单元测试文件夹

javascript - 使用 jquery mobile 和 cordova 无法刷新可折叠 ListView 的标题

javascript - jquery 将秒转换成这种格式

java - getKeyCode()方法错误找不到符号

java - 透明 JButton

android - setLatestEventInfo 无法解析