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内核仍然会先加载页面并显示进度条,然后才触发拦截回调。

解决方案建议:

  1. 对于需要完全拦截的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);
  1. 或者通过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){
    // 拦截处理
});
回到顶部