gpt4 book ai didi

java - Android webview 多个窗口。如何检测是从 html 目标 ="blank"还是从 javascript 创建的窗口?

转载 作者:行者123 更新时间:2023-12-02 12:09:00 27 4
gpt4 key购买 nike

Android webview 多个窗口。如何检测是从 html target="blank"创建的窗口还是 JavaScript 弹出窗口?

我在自己的浏览器中有下一个代码:

 WebSettings settings = webView.getSettings();
settings.setDomStorageEnabled(true);
settings.setJavaScriptEnabled(true);
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
settings.setBuiltInZoomControls(true);
settings.setDisplayZoomControls(false);
settings.setRenderPriority(WebSettings.RenderPriority.HIGH);
settings.setGeolocationEnabled(true);
settings.setSupportMultipleWindows(true);

还在我们的 ChromeClient 中实现创建新窗口:

            @Override
public void onCreateWindow(WebView webView, boolean isDialog, boolean isUserGesture, Message resultMsg) { //logic for create new webview and set new url in it. }

我们想要警告用户有关创建的新选项卡,但前提是弹出窗口是从 javascript 代码获取的,因为它通常是广告,而且许多非广告页面使用 html 中的 target="blank"属性。

最佳答案

好的。首先,您可以尝试通过添加自定义 WebChromeClient 来执行某些操作。方法

onJsBeforeUnload(WebView view, String url, String message, JsResult result)

onJsConfirm(WebView view, String url, String message, JsResult result)

此外,您可以尝试更改 WebView 的 WebSettings。 https://developer.android.com/reference/android/webkit/WebSettings.html

我发现了这个。 自动设置JavaScriptCanOpenWindows( boolean 标志)

关于java - Android webview 多个窗口。如何检测是从 html 目标 ="blank"还是从 javascript 创建的窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46686703/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com