android - 无论 shouldOverrideUrlLoading 返回值如何,都会在 Android 本机应用程序的 WebView 中触发 Window.beforeunload 事件
问题描述
在 Android-WebView 中,我试图通过覆盖 shouldOverrideUrlLoading 在外部应用程序中打开选定/触摸的链接。
Window beforeunload 事件被触发,无论 shouldOverrideUrlLoading 的返回值如何。
根据当前实现,我的网站正在考虑(“beforeunload 事件”)作为用户导航离开页面并将用户标记为非活动,这是不正确的。
想了解WebView的行为,以便我能够正确处理。
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
{
if (request.getUrl().getHost().contains("mysite.com"))
{
// same site load in WebView itself.
return false;
}
Intent intent = new Intent(Intent.ACTION_VIEW, request.getUrl());
startActivity(intent);
return true;
}
解决方案
我认为方法签名应该是下一个覆盖您想要的操作。
public boolean shouldOverrideUrlLoading(WebView view, String url) {
其他可能的更新可能是
确保您没有多窗口设置
mWebView.getSettings().setSupportMultipleWindows(true);
有时您必须设置混合内容属性
webView.getSetting().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
。
推荐阅读
- uwp - 在 UWP 中:Contact.Phones 属性不返回 IList
如文档中所述 - c# - 如何在 Android 和 IOS 上创建目录?
- ios - 在 iOS 中快速更改像素的最佳方法
- python - 在 Django 中使用“_id”
- java - 当我包含共享首选项时,活动崩溃
- python - 如何使用 Conda 安装 Tensorflow 2.0?
- node.js - 为什么在这种情况下 MediaStream 对象是空的?
- rx-java2 - 如何使用 io.vertx.reactivex.ext.web.client.WebClient 的 rxSendStream 对字符串进行 Http POST
- c - 在C中逐个字符地将字符串的一部分复制到一个新的字符串中
- gradle - Groovy 编译失败,stackoverflow 无法重现