当按下网站上的按钮时,我试图允许在 WebView 中打开一个新窗口。我尝试同时启用 setJavaScriptCanOpenWindowsAutomaticallysetSupportMultipleWindows ,但按下按钮时仍然没有任何 react 。

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);
    }

}

我已阅读并尝试了以下建议的答案:
  • android : Open pop-up window in my webview

  • 我认为链接 here 的问题中的答案可能不适用于我的案例,因为链接的问题正在谈论同一窗口中的弹出窗口,但我单击的按钮会完全打开一个新窗口(我无法更改)。

    有谁知道为什么 setJavaScriptCanOpenWindowsAutomaticallysetSupportMultipleWindows 没有做到这一点,以及我如何设置我的 webview 以便它允许单击打开新窗口的按钮?

    最佳答案

    您是对的 path ,我们遇到了同样的问题。setJavaScriptCanOpenWindowsAutomaticallysetSupportMultipleWindows 必须在 Chrome 浏览器上设置。您的代码正在使用 默认 网络 View :

    myWebView = (android.webkit.WebView) findViewById(R.id.webview);
    WebSettings webSettings = myWebView.getSettings();
    

    必须扩展 webview 以使用 chrome setWebChromeClient :
    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);
               }
    });
    

    关于javascript - setSupportMultipleWindows 和 setJavaScriptCanOpenWindowsAutomatically 不允许弹出 webView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48040319/

    10-11 22:14
    查看更多