如何访问 Web 视图中显示的弹出窗口的 html 内容?
How do I get access to the html contents of a popup displayed in a webview?
我的应用程序需要从网站检索数据。
我使用 webview
访问所需的页面。在此 webview
中显示的页面中,有 link 指向应用所需的详细信息。跟随 link(使用 webView.loadUrl()
)时,会在 webview
.
顶部显示一个弹出窗口
应用程序使用以下代码访问 links:
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”。
尝试使用 webView.evaluateJavascript()
而不是 webView.loadUrl()
,除非您需要使用 Kitkat 之前的设备
参考:
Android Calling JavaScript functions in WebView
应用程序从该站点检索的信息不需要显示在 UI 上。它们在应用程序逻辑中被解析和使用。因此,我设计了以下解决方法:我用 javascript:apex.navigation.redirect()
替换了原来的 javascript:apex.navigation.dialog()
,将请求的信息直接显示到 webview
而不是弹出窗口 window .
由于信息现在进入webview
,可以通过上面的BackgroundScriptInterface
访问。
我的应用程序需要从网站检索数据。
我使用 webview
访问所需的页面。在此 webview
中显示的页面中,有 link 指向应用所需的详细信息。跟随 link(使用 webView.loadUrl()
)时,会在 webview
.
应用程序使用以下代码访问 links:
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”。
尝试使用 webView.evaluateJavascript()
而不是 webView.loadUrl()
,除非您需要使用 Kitkat 之前的设备
参考: Android Calling JavaScript functions in WebView
应用程序从该站点检索的信息不需要显示在 UI 上。它们在应用程序逻辑中被解析和使用。因此,我设计了以下解决方法:我用 javascript:apex.navigation.redirect()
替换了原来的 javascript:apex.navigation.dialog()
,将请求的信息直接显示到 webview
而不是弹出窗口 window .
由于信息现在进入webview
,可以通过上面的BackgroundScriptInterface
访问。