是否为同一域内的链接调用 shouldOverrideUrlLoading?
Is shouldOverrideUrlLoading called for links within the same domain?
我有一个混合应用程序,其中有一个 WebView,它正在实施 shouldOverrideUrlLoading 方法(包括已弃用的版本和最新版本)。这应该在我的域中加载任何外部 links 或某些 links 之前接管控制权。不赘述,代码大致如下:
private WebView mWebView;
mWebView.setWebViewClient(new myWebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.isExternal() || url.contains("#specialCase")) {
// Do actions
return true;
}
return super.shouldOverrideUrlLoading(view, url);
}
});
我注意到所有外部 link 都能正常工作,但是当 link 在我的域中时,根本不会调用 shouldOverrideUrlLoading,所以我无法检测到那些我想接管控制权的情况。
android 文档指出
Give the host application a chance to take over the control when a new
url is about to be loaded in the current WebView.
那个新的意思是不同的域吗?我有什么遗漏或做错了什么吗?关于如何检测用户单击指向同一域的 link 的任何想法?
提前致谢。
终于找到shouldOverrideUrlLoading 一直没有被调用的原因了。
显然该方法仅在实际加载即将开始时调用。我们的 Web 应用程序是单页应用程序,因此即使 URL 更改,也不会加载新页面并且不会调用 shouldOverrideUrlLoading。
我有一个混合应用程序,其中有一个 WebView,它正在实施 shouldOverrideUrlLoading 方法(包括已弃用的版本和最新版本)。这应该在我的域中加载任何外部 links 或某些 links 之前接管控制权。不赘述,代码大致如下:
private WebView mWebView;
mWebView.setWebViewClient(new myWebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.isExternal() || url.contains("#specialCase")) {
// Do actions
return true;
}
return super.shouldOverrideUrlLoading(view, url);
}
});
我注意到所有外部 link 都能正常工作,但是当 link 在我的域中时,根本不会调用 shouldOverrideUrlLoading,所以我无法检测到那些我想接管控制权的情况。
android 文档指出
Give the host application a chance to take over the control when a new url is about to be loaded in the current WebView.
那个新的意思是不同的域吗?我有什么遗漏或做错了什么吗?关于如何检测用户单击指向同一域的 link 的任何想法?
提前致谢。
终于找到shouldOverrideUrlLoading 一直没有被调用的原因了。
显然该方法仅在实际加载即将开始时调用。我们的 Web 应用程序是单页应用程序,因此即使 URL 更改,也不会加载新页面并且不会调用 shouldOverrideUrlLoading。