uni-app中H5平台uni.showModal不显示,也不报错

发布于 1周前 作者 itying888 来自 Uni-App

uni-app中H5平台uni.showModal不显示,也不报错

// #ifdef H5  
uni.showModal({  
    title: '提示',  
    content: '请确认反馈内容无误!',  
    success: (res)=> {  
        console.log(res);  
        if (res.confirm) {  
            _this.SubmitFeedBack()  
        }  
    },  
    fail: (err)=>{  
        console.log("报错信息", err);  
    }  
});  

//#endif
开发环境 版本号 项目创建方式
H5 #ifdef

13 回复

你这是用在哪了?控制台也没报错吗? 你试试官方的demo能不能显示 https://hellouniapp.dcloud.net.cn/pages/API/modal/modal


H5,点击事件里边,用于二次确认,控制台没报错

回复 cxm151254182: 官方模版中的modal也打不开?

回复 爱豆豆: 可以

回复 cxm151254182: 能发个复现的demo吗 我帮你看看

回复 爱豆豆: 我这边H5端uni.showToast也弹不出来

你发这个我也运行不了啊 复现不出来 我这边showToast showModal都可以正常显示 感觉是你代码的问题 你debugger一步一步排查一下 或者你把你页面代码先删掉 直保留showModal 看看能不能弹出来 如果可以正常弹出 那就说明是你其他地方代码影响到了

回复 爱豆豆: 复制你的这段代码运行 确实不生效弹框

会不会是同一时间有多个uni.showModal,导致被覆盖掉了?

<template> <view class="FeedBack">
<button class="Submit" @click="submit">提交</button>    
</view> </template> <script> export default {
data() {    

    return {};    

},    

methods:{    

    submit(){    

        uni.showModal({    

            title: '提示',    

            content: '请确认反馈内容无误!',    

            success: (res)=> {    

                console.log(res);    

            },    

            fail: (err)=>{    

                console.log("报错信息", err);    

            }    

        });    

    },    

}    

}
</script>

试试this.$nextTick()在这hooks里面弹窗呢,或者setTimeout。。。我新建了一个demo是没有遇到你这个问题的

在uni-app中,如果你在H5平台上遇到uni.showModal不显示且没有报错的情况,这通常与环境配置或代码实现方式有关。以下是一些可能的解决方案和代码示例,帮助你排查和解决问题。

1. 确认uni-app和H5环境版本

首先,确保你的uni-app框架和H5平台的环境都是最新版本。有时候,旧版本可能存在已知的bug或兼容性问题。

2. 检查代码实现

uni.showModal的正确使用方式如下:

uni.showModal({
    title: '提示',
    content: '这是一个模态弹窗',
    success: function (res) {
        if (res.confirm) {
            console.log('用户点击确定');
        } else if (res.cancel) {
            console.log('用户点击取消');
        }
    }
});

确保你没有在调用uni.showModal之前或之后有任何会阻塞UI线程的操作,比如长时间的同步计算或网络请求。

3. 检查CSS样式

有时候,页面的CSS样式可能会影响到模态框的显示。检查是否有任何CSS规则可能隐藏了模态框,例如:

/* 确保没有这样的规则 */
.uni-modal {
    display: none !important;
}

4. 使用console.log调试

在调用uni.showModal前后添加console.log语句,确保代码确实被执行到了:

console.log('调用uni.showModal前');
uni.showModal({
    title: '提示',
    content: '这是一个模态弹窗',
    success: function (res) {
        console.log('模态框回调', res);
        if (res.confirm) {
            console.log('用户点击确定');
        } else if (res.cancel) {
            console.log('用户点击取消');
        }
    }
});
console.log('调用uni.showModal后');

5. 检查浏览器控制台错误

打开浏览器的开发者工具,查看控制台是否有任何错误或警告信息。这些信息可能会提供关于为什么模态框没有显示的线索。

6. 尝试简化代码

创建一个新的uni-app项目,只包含最基本的页面和调用uni.showModal的代码,看看问题是否仍然存在。这有助于排除其他代码或配置可能引起的干扰。

如果以上步骤都不能解决问题,建议检查uni-app的官方文档和社区论坛,看看是否有其他开发者遇到并解决了类似的问题。

回到顶部