gpt4 book ai didi

javascript - 未调用 WebChromeClient OnJSAlert

转载 作者:行者123 更新时间:2023-11-30 02:04:59 24 4
gpt4 key购买 nike

我在 WebView 中运行 JS 脚本。该脚本向 WebView 发出一条消息提醒,我想在我的应用程序中接收它。问题是 onJSAlert 没有被调用,我也不能在定义方法时使用 @Override annotaion。
我的进口商品是 -

import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.JsResult;
import android.webkit.WebSettings;

我这样使用 WebView -

webView = (WebView)findViewById(R.id.webView1); 
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {
Log.d("fibi", "finished loading");
}
}
//@Override //If I uncomment this I get compilation error
public boolean onJSAlert(WebView view, String url, String message, final JsResult result) {
encResult = message;
Log.d("fibi", encResult);
result.cancel();
return true;
}
});
webView.loadUrl("file:///android_asset/test.html");

我的 test.html 的 HTML 代码是

 <html>
<body >
<div onclick="alert('CLICK')"> Click Me !! </div>
</body>
</html>

当我运行该应用程序时,HTML 文件加载并调用了 onProgressChanged - 我可以看到显示“完成加载”的日志消息。当我单击加载页面上的链接时,未调用 onJSAlert - 我没有收到日志消息,而是可以看到一个对话框窗口在我的设备上弹出,其中包含警报消息。
如果我尝试在 onJSAlert 的开头使用 @Override 注释,我会收到错误 - “MainActivity 类型的方法 onJSAlert(WebView, String, String, JsResult) .MyWebClient 必须覆盖或实现父类(super class)型方法。
有什么想法吗?

最佳答案

如果您使用的方法名称拼写不正确,您的方法调用将无法工作

onJSAlert

更改为:

onJsAlert

关于javascript - 未调用 WebChromeClient OnJSAlert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30816047/

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