首页 > 解决方案 > 无论 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;
}

标签: androidwebview

解决方案


我认为方法签名应该是下一个覆盖您想要的操作。

public boolean shouldOverrideUrlLoading(WebView view, String url) {

其他可能的更新可能是

  1. 确保您没有多窗口设置mWebView.getSettings().setSupportMultipleWindows(true);

  2. 有时您必须设置混合内容属性webView.getSetting().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);


推荐阅读