HarmonyOS鸿蒙Next中web组件的onOverrideUrlLoading与android中webview的shouldOverrideUrlLoading返回内容不同
HarmonyOS鸿蒙Next中web组件的onOverrideUrlLoading与android中webview的shouldOverrideUrlLoading返回内容不同 比如加载一个简单的 http://www.baidu.com
android中设置如下
WebSettings webSettings = currentWebView.getSettings();
webSettings.setSupportZoom(true); // zoomAccess
webSettings.setBuiltInZoomControls(true);
webSettings.setLoadWithOverviewMode(true); // overviewModeAccess
webSettings.setUseWideViewPort(true); // wideViewModeAccess
webSettings.setLoadsImagesAutomatically(true); // imageAccess
webSettings.setJavaScriptEnabled(false); // javaScriptAccess
webSettings.setDatabaseEnabled(false); // databaseAccess
webSettings.setJavaScriptCanOpenWindowsAutomatically(false); //allowWindowOpenMethod
webSettings.setSupportMultipleWindows(false); // multiWindowAccess
webSettings.setAllowFileAccess(false); // fileAccess
webSettings.setDomStorageEnabled(false); // domStorageAccess
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
webSettings.setAllowUniversalAccessFromFileURLs(false);
currentWebView.setBackgroundColor(Color.WHITE);
currentWebView.setClipToPadding(true);
鸿蒙中设置如下,尽量保证设置一致
Web({ src: '', controller: this.webviewController })
.zoomAccess(true)
.overviewModeAccess(true)
.metaViewport(true)
.imageAccess(true)
.javaScriptAccess(false)
.databaseAccess(false)
.allowWindowOpenMethod(false)
.multiWindowAccess(false)
.fileAccess(false)
.domStorageAccess(false)
.cacheMode(CacheMode.None)
.onOverrideUrlLoading((webResourceRequest) => {
console.log("[HTTPWebBrowsingTest] onOverrideUrlLoading " + webResourceRequest.getRequestUrl())
this.webviewController.loadUrl(webResourceRequest.getRequestUrl())
return true;
})
可以看到android中shouldOverrideUrlLoading函数回调了三次,地址分别是
-
[http://m.baidu.com/?baiduid=138DF16BE7C4EA3E552B5544D9899D55&cip6=240e:457:ff01:80a3:14c0:c101:7c78:f447&from=844b&vit=fps?cip6=240e:457:ff01:80a3:14c0:c101:7c78:f447&from=844b&vit=fpsbd_page_type=1&from=844b&logid=16940264344259465100&ssid=0&pu=sz@1321_480&t_noscript=jump](http://m.baidu.com/?baiduid=138DF16BE7C4EA3E552B5544D9899D55&cip6=240e:457:ff01:80a3:14c0:c101:7c78:f447&from=844b&vit=fps?cip6=240e:457:ff01:80a3:14c0:c101:7c78:f447&from=844b&vit=fpsbd_page_type=1&from=844b&logid=16940264344259465100&ssid=0&pu=sz@1321_480&t_noscript=jump)
-
[https://m.baidu.com/?baiduid=138DF16BE7C4EA3E552B5544D9899D55&cip6=240e:457:ff01:80a3:14c0:c101:7c78:f447&from=844b&vit=fps?cip6=240e:457:ff01:80a3:14c0:c101:7c78:f447&from=844b&vit=fpsbd_page_type=1&from=844b&logid=16940264344259465100&ssid=0&pu=sz@1321_480&t_noscript=jump](https://m.baidu.com/?baiduid=138DF16BE7C4EA3E552B5544D9899D55&cip6=240e:457:ff01:80a3:14c0:c101:7c78:f447&from=844b&vit=fps?cip6=240e:457:ff01:80a3:14c0:c101:7c78:f447&from=844b&vit=fpsbd_page_type=1&from=844b&logid=16940264344259465100&ssid=0&pu=sz@1321_480&t_noscript=jump)
但鸿蒙中的onOverrideUrlLoading函数只回调了一次 地址是android的第二个地址。
[http://m.baidu.com/?baiduid=DC8571BB54C8502BDF31E0CA0E8FD514&cip6=240e:457:ff01:80a3:53ff:ad78:4df4:ff87&from=844b&vit=fps?cip6=240e:457:ff01:80a3:53ff:ad78:4df4:ff87&from=844b&vit=fpsbd_page_type=1&from=844b&logid=6501297946642667726&ssid=0&pu=sz@1321_480&t_noscript=jump](http://m.baidu.com/?baiduid=DC8571BB54C8502BDF31E0CA0E8FD514&cip6=240e:457:ff01:80a3:53ff:ad78:4df4:ff87&from=844b&vit=fps?cip6=240e:457:ff01:80a3:53ff:ad78:4df4:ff87&from=844b&vit=fpsbd_page_type=1&from=844b&logid=6501297946642667726&ssid=0&pu=sz@1321_480&t_noscript=jump)
这是为什么,是我设置问题吗,如何设置可以让鸿蒙得到和android一样的回调结果。或者鸿蒙底层做了什么优化,导致返回结果和android不同。
更多关于HarmonyOS鸿蒙Next中web组件的onOverrideUrlLoading与android中webview的shouldOverrideUrlLoading返回内容不同的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你好,内部处理中,有结论这边会立马回复,请耐心等待一下。
更多关于HarmonyOS鸿蒙Next中web组件的onOverrideUrlLoading与android中webview的shouldOverrideUrlLoading返回内容不同的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
好的
感谢,
在HarmonyOS鸿蒙Next中,Web组件的onOverrideUrlLoading方法与Android中WebView的shouldOverrideUrlLoading方法在返回内容上存在差异。onOverrideUrlLoading方法返回一个布尔值,用于指示是否拦截并处理URL加载请求。如果返回true,表示拦截并处理该URL,系统将不会继续加载该URL;如果返回false,表示不拦截,系统将继续加载该URL。相比之下,shouldOverrideUrlLoading方法在Android中也返回布尔值,但其逻辑与鸿蒙Next中的onOverrideUrlLoading方法相同。两者的主要区别在于鸿蒙Next中的onOverrideUrlLoading方法更注重与鸿蒙生态的集成和适配,可能在处理某些特定URL时会有不同的行为。
在HarmonyOS鸿蒙Next中,web组件的onOverrideUrlLoading方法与Android中WebView的shouldOverrideUrlLoading方法在功能上类似,都是用于拦截URL加载事件。然而,它们的返回值和行为有所不同:
-
返回值:
- 在Android中,
shouldOverrideUrlLoading返回一个boolean值:true表示拦截URL并自行处理,false表示继续由WebView加载。 - 在HarmonyOS鸿蒙Next中,
onOverrideUrlLoading返回一个boolean值:true表示拦截URL并自行处理,false表示继续由web组件加载。
- 在Android中,
-
行为:
- Android的
shouldOverrideUrlLoading通常用于处理特定URL的跳转逻辑。 - HarmonyOS的
onOverrideUrlLoading也用于类似目的,但其实现和调用方式可能与Android有所不同,具体取决于鸿蒙系统的设计和API实现。
- Android的
总结来说,两者的核心功能相似,但在具体实现和返回值处理上可能存在细微差异,开发者需根据各自平台的文档进行适配。

