我正在尝试加载页面,然后按以下方式执行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);
}
}
但它无法正常工作,我该怎么办?
答案 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();
}
多数民众赞成保证,完成所有工作后将完成调用。检查一下。