swan.onPageNotFound
基础库 3.60.2 开始支持,低版本需做兼容处理。
解释: 监听小程序要打开的页面不存在事件。该事件与 App.onPageNotFound 的回调时机一致。
方法参数
Function callback
callback 参数说明
小程序要打开的页面不存在的事件回调函数。
callback 返回参数说明
属性 | 类型 | 说明 |
---|---|---|
path | String | 不存在页面的路径 |
query | Object | 打开不存在页面的 query 参数 |
isEntryPage | Boolean | 是否本次启动的首个页面(例如从分享等入口进来,首个页面是开发者配置的分享页面) |
示例
扫码体验
代码示例
请使用百度APP扫码
图片示例
代码示例 1:在生命周期的 onPageNotFound 中使用
- JS
App({
onLaunch() {},
onPageNotFound(res) {
console.log(res);
swan.showModal({
title: '',
content: JSON.stringify(res)
});
// 页面不存在时,默认跳转到首页,如果是 tabbar 页面,请使用 swan.switchTab 进行跳转
swan.navigateTo({
url: '/home/home'
});
}
});
代码示例 2:等同于示例一的另一种写法
- JS
App({
onLaunch() {
swan.onPageNotFound(function(res) {
console.log(res);
swan.showModal({
title: '',
content: JSON.stringify(res)
});
// 页面不存在时,默认跳转到首页,如果是 tabbar 页面,请使用 swan.switchTab 进行跳转
swan.navigateTo({
url: '/home/home'
});
});
}
});
代码示例 3:可根据开发者的业务逻辑调整用法
- JS
Page({
data: {},
onTap() {
swan.onPageNotFound(function(res) {
console.log('onPageNotFound success',res);
swan.showModal({
title: '',
content: JSON.stringify(res)
});
// 页面不存在时,默认跳转到首页,如果是 tabbar 页面,请使用 swan.switchTab 进行跳转
swan.navigateTo({
url: '/home/home',
success: res => {
console.log('navigateTo success');
},
fail: err => {
console.log('navigateTo fail');
},
complete() {
swan.offPageNotFound();
}
});
});
swan.navigateTo({
url: '/path/to/otherPage'
});
}
});
Bug & Tip
- 开发者可以在回调中进行页面重定向。
- 在除了 App.js 的其他时机中调用 swan.onPageNotFound 的话,需要用swan.offPageNotFound取消监听,否则会出现监听多次的情况