gpt4 book ai didi

javascript - 监听 webView.loadurl

转载 作者:太空宇宙 更新时间:2023-11-04 13:17:16 25 4
gpt4 key购买 nike

我正在尝试加载页面,然后执行 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com