InAppBrowser设置hidespinner=yes后iOS原生加载指示器仍显示的解决办法
解决iOS上InAppBrowser原生加载指示器无法禁用的问题
我完全懂你的困扰——明明在InAppBrowser的配置里加了hidespinner=yes,iOS的原生加载圈圈还是会在页面加载时跳出来,确实挺烦人的。下面几个方案可以帮你彻底解决这个问题:
1. 升级InAppBrowser插件到最新版本
早期版本的cordova-plugin-inappbrowser对hidespinner参数的支持存在bug,尤其是在iOS 14+的系统上。先尝试升级插件:
cordova plugin remove cordova-plugin-inappbrowser cordova plugin add cordova-plugin-inappbrowser@latest
升级后再测试你的代码,很多情况下这个问题就能直接解决。
2. 检查target参数的取值
确保你调用open()方法时传入的target参数是_blank(InAppBrowser的默认值)。如果设置成_self或者_system,hidespinner参数可能不会生效——因为这时候会使用应用内的WebView或者系统浏览器,而非InAppBrowser实例。
3. 修改插件原生代码(强制禁用)
如果升级插件后问题依旧,你可以手动修改iOS端的插件代码,直接关闭WebView的加载指示器:
- 找到项目中的
plugins/cordova-plugin-inappbrowser/src/ios/CDVInAppBrowser.m文件 - 定位到
createInAppBrowserViewController方法,在创建WKWebViewConfiguration的部分,添加以下代码:
configuration.showsProgressView = NO;
- 如果你用的是旧版UIWebView(不推荐,但如果项目还在使用),则找到创建UIWebView的地方,添加:
webView.showsNetworkActivityIndicator = NO;
修改后重新编译iOS项目,原生加载指示器就会被彻底禁用。
4. 额外的config.xml配置
在项目的config.xml中添加以下偏好设置,进一步增强对iOS WebView行为的控制:
<preference name="DisallowOverscroll" value="true" /> <preference name="WKWebViewOnly" value="true" />
WKWebViewOnly会强制使用更现代的WKWebView,避免旧版UIWebView的兼容性问题。
内容的提问来源于stack exchange,提问作者akadorian
相关产品推荐
相关产品推荐

