android:在我的webview中打开弹出窗口 [英] android : Open pop-up window in my webview
问题描述
我的应用程序中有webview,当我单击webview内的链接时,我希望它打开弹出窗口.我添加了以下代码,但是没有用:-
I have webview in my application and I want it to open pop up windows when clicking on a link inside webview. I have added following code but it didn't work:-
WebSettings webSettings = webViewPage.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportMultipleWindows(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
弹出窗口应该看起来像这样
the popup should appear like this
推荐答案
3年后,我正在回答自己的问题:
I am answering my own question after 3 long years:
在网页内触摸链接时,根据网页的实现方式,有两种可能的情况: 1)链接将在同一窗口中打开. 2)链接将在新窗口中打开.
When a link is touched inside a webpage then depending on a webpage implementation there are two possible scenarios: 1) Link will be opened in same window. 2) Link will be opened in new window.
使用以下代码可以轻松处理第一种情况:
Well Its easy to handle 1st scenario using below code:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
在WebViewClient实现中覆盖shouldOverrideUrlLoading将在同一窗口中打开链接.
Overiding shouldOverrideUrlLoading inside WebViewClient implementation will open link in same window.
现在让我们来看第二种情况,即网页请求在新窗口中打开URL.对于这种情况,我们需要告诉我们的Web视图支持多个窗口,如下所示:
Now lets look at the 2nd case, where webpage is requesting a url to be open in new window. For this case we need to tell our webview to support multiple windows like below:
webView.getSettings().setSupportMultipleWindows(true);
,然后在网页请求新窗口时将新的Web chrome客户端添加到webview以获得事件
and then adding a new web chrome client to webview to get event when new window is requested by webpage
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onCreateWindow(WebView view, boolean isDialog,
boolean isUserGesture, Message resultMsg) {
WebView newWebView = new WebView(WebpageActivity.this);
newWebView.getSettings().setJavaScriptEnabled(true);
newWebView.getSettings().setSupportZoom(true);
newWebView.getSettings().setBuiltInZoomControls(true);
newWebView.getSettings().setPluginState(PluginState.ON);
newWebView.getSettings().setSupportMultipleWindows(true);
view.addView(newWebView);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(newWebView);
resultMsg.sendToTarget();
newWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
return true;
}
}
});
干杯!
这篇关于android:在我的webview中打开弹出窗口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!