钉钉小程序有监听页面返回事件的api吗?用户离开页面出现弹窗 点击确认再返回的效果,能实现吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
钉钉小程序可以通过特定的 API 实现监听页面返回事件,并在用户离开页面时弹出确认对话框,点击确认后再执行返回操作。以下是实现该功能的具体方法和步骤:
钉钉小程序提供了 my.onAppHide 和 my.onPageNotFound 等事件监听 API,但针对页面返回事件(如用户点击返回按钮或物理返回键),需要结合 返回询问对话框 的功能来实现。
通过调用 WVUIDialog.enableAlertBeforeUnload API,可以开启页面返回时的询问对话框。当用户尝试返回时,会弹出一个确认对话框,提示用户是否确认离开当前页面。
开启返回拦截开关
在初始化配置中,使用以下代码开启返回拦截功能:
Mriver.setConfig("enable_back_perform", "YES");
调用 enableAlertBeforeUnload API
在小程序开发时,调用以下代码启用返回询问对话框:
var params = {
   message: '确认离开此页面吗?', // 自定义提示信息
};
window.WindVane.call('WVUI', 'enableAlertBeforeUnload', params, function() {
   console.log('返回询问对话框已启用');
}, function(e) {
   console.error('启用失败:', e.msg);
});
注意:
- 该 API 仅在 WindVane Android 1.0.3.4 及以上版本有效,请确保运行环境满足要求。 - 如果未传入 message 参数,默认提示内容为“离开此页面?”。
如果需要关闭返回询问对话框,可以调用 WVUIDialog.disableAlertBeforeUnload API:
window.WindVane.call('WVUI', 'disableAlertBeforeUnload', {}, function() {
    console.log('返回询问对话框已关闭');
}, function(e) {
    console.error('关闭失败:', e.msg);
});
除了使用系统提供的返回询问对话框外,还可以通过自定义逻辑实现更复杂的功能。例如,在用户点击返回按钮时,手动触发弹窗并根据用户选择决定是否执行返回操作。
Page({
    onLoad() {
        // 监听返回事件
        my.onAppHide(() => {
            my.confirm({
                title: '提示',
                content: '确认离开此页面吗?',
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                success: (result) => {
                    if (result.confirm) {
                        // 用户点击确认,执行返回操作
                        my.navigateBack();
                    } else {
                        // 用户点击取消,阻止返回
                        console.log('用户取消返回');
                    }
                },
            });
        });
    },
    onUnload() {
        // 页面卸载时移除监听
        my.offAppHide();
    },
});
onAppHide 和 onPageNotFound),需注意避免事件冲突或重复触发。通过上述方法,您可以实现钉钉小程序的页面返回事件监听,并在用户离开页面时弹出确认对话框,点击确认后再执行返回操作。