SetSupportMultipleWidows和setJavaScriptCanOpenWindowsAutomatically不允许webView弹出窗口
我试图允许一个新的窗口被打开时,一个网站上的按钮被按下。我已尝试自动启用SetSupportMultipleWidows和setJavaScriptCanOpenWindowsAutomatically不允许webView弹出窗口,javascript,android,webview,tabs,Javascript,Android,Webview,Tabs,我试图允许一个新的窗口被打开时,一个网站上的按钮被按下。我已尝试自动启用setJavaScriptCanOpenWindows和setSupportMultipleWidows,但按下按钮后仍然没有任何效果 public class WebView extends AppCompatActivity { android.webkit.WebView myWebView; @Override protected void onCreate(Bundle savedIns
setJavaScriptCanOpenWindows
和setSupportMultipleWidows
,但按下按钮后仍然没有任何效果
public class WebView extends AppCompatActivity {
android.webkit.WebView myWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
myWebView = (android.webkit.WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webSettings.setUserAgentString("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");
webSettings.setAllowFileAccess(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setSupportMultipleWindows(true);
myWebView.loadUrl("https://somewebsite.com/");
}
@Override
protected void onSaveInstanceState(Bundle outState ) {
super.onSaveInstanceState(outState);
myWebView.saveState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
myWebView.restoreState(savedInstanceState);
}
}
我已经阅读并尝试了以下建议的答案:
setJavaScriptCanOpenWindowAutomatically
和setSupportMultipleWidows
没有做到这一点,以及我如何设置我的webview,使其允许单击打开新窗口的按钮?您在右边,我们遇到了同样的问题。
setJavaScriptCanOpenWindowAutomatically
和setSupportMultipleWidows
必须在Chrome浏览器上设置。您的代码正在使用默认的网络视图:
myWebView = (android.webkit.WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
必须扩展webview以使用chromesetWebChromeClient:
myWebView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onCreateWindow(WebView view, boolean isDialog,
boolean isUserGesture, Message resultMsg) {
// Add your settings to the chrome browser:
WebView newWebView = new WebView(WebpageActivity.this);
newWebView.getSettings().setJavaScriptEnabled(true);
newWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
newWebView.getSettings().setSupportMultipleWindows(true);
}
});
在脚本端代码中保留window.open()
。并在android端的WebChromeClient
中覆盖onCreateWindow