【发布时间】:2021-08-08 14:35:27
【问题描述】:
我的应用程序需要从网站检索数据。
我使用webview 访问所需的页面。在此webview 中显示的页面中,有指向应用程序所需详细信息的链接。当点击链接(使用webView.loadUrl())时,webview 顶部会显示一个弹出窗口。
应用程序可以使用以下代码访问链接:
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new BackgroundScriptInterface(), "HTMLOUT");
webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url)
{
webView.loadUrl("javascript:window.HTMLOUT.processHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
}
});
和
public class BackgroundScriptInterface {
@JavascriptInterface
public void processHTML(String html) {
...
}
但是当弹出窗口显示时,这个BackgroundScriptInterface 不会被调用。
如何访问弹出窗口的 html 内容?
编辑 正如下面 Eddie 所建议的,我已经尝试过
webView.evaluateJavascript(item.competDetailUrl, new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) {
Log.d("competDetail", s);
}
});
弹出窗口仍按预期显示。但是传递给onReceiveValue 回调的值是“null”。
【问题讨论】:
标签: java android popup processhtml