uni-app Webview窗口URL请求被拦截时,进度条不应该继续显示
uni-app Webview窗口URL请求被拦截时,进度条不应该继续显示
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
HBuilderX | 3.1.3 | 云端 |
产品分类:HTML5+
手机系统:Android
手机系统版本号:Android 10
手机厂商:小米
手机机型:红米note7 pro
操作步骤:
见描述
预期结果:
见描述
实际结果:
见描述
bug描述:
itme.plus.webview.create("https://baidu.com",
"iframe",{
top:'0',
bottom:'0',
kernel:'WKWebview',
progress:{color:'#5DE3FF'},//进度条
});
plus.webview.currentWebview().append(itme);
itme.overrideUrlLoading({mode:'allow',match:'.*'},function(e){//拦截所有url
alert(e.url)
});
更多关于uni-app Webview窗口URL请求被拦截时,进度条不应该继续显示的实战教程也可以访问 https://www.itying.com/category-93-b0.html
4 回复
这种拦截方法可以防止某些网页跳转淘宝吗?
更多关于uni-app Webview窗口URL请求被拦截时,进度条不应该继续显示的实战教程也可以访问 https://www.itying.com/category-93-b0.html
可以啊,淘宝,京东,拼多多我都是这么拦截的
回复 王伟锋: 多谢。我也得拦截一下,有些网页太恶心了,特别是百度
针对uni-app中Webview窗口URL请求被拦截时进度条继续显示的问题,这是一个已知的Webview组件行为特性。当使用overrideUrlLoading拦截URL请求时,Webview内核仍然会先加载页面并显示进度条,然后才触发拦截回调。
解决方案建议:
- 对于需要完全拦截的URL,可以在创建Webview时不立即加载URL,改为在拦截回调中处理:
const itme = plus.webview.create("", "iframe", {
top: '0',
bottom: '0',
kernel: 'WKWebview',
progress: {color: '#5DE3FF'}
});
itme.overrideUrlLoading({mode:'allow',match:'.*'}, function(e){
// 处理拦截逻辑
console.log('拦截到URL:', e.url);
// 如需加载,可在这里调用itme.loadURL()
});
// 最后再加载初始URL
itme.loadURL("https://baidu.com");
plus.webview.currentWebview().append(itme);
- 或者通过CSS隐藏进度条:
const itme = plus.webview.create("https://baidu.com", "iframe", {
top: '0',
bottom: '0',
kernel: 'WKWebview',
progress: {color: '#5DE3FF', display: 'none'} // 初始隐藏
});
itme.overrideUrlLoading({mode:'allow',match:'.*'}, function(e){
// 拦截处理
});