swan.onPageNotFound

基础库 3.60.2 开始支持,低版本需做兼容处理swan.onPageNotFound - 图1

解释: 监听小程序要打开的页面不存在事件。该事件与 App.onPageNotFound 的回调时机一致。

方法参数

Function callback

小程序要打开的页面不存在的事件回调函数。

callback返回参数说明

属性类型说明
pathstring不存在页面的路径
queryObject打开不存在页面的 query 参数
isEntryPageboolean是否本次启动的首个页面(例如从分享等入口进来,首个页面是开发者配置的分享页面)

示例

扫码体验

swan.onPageNotFound - 图2请使用百度APP扫码

图片示例

swan.onPageNotFound - 图3

代码示例 1 :在生命周期的onPageNotFound中使用

在开发者工具中预览效果

  1. // app.js
  2. App({
  3. onLaunch() {
  4. },
  5. onPageNotFound(res) {
  6. console.log(res);
  7. swan.showModal({
  8. title: '',
  9. content: JSON.stringify(res)
  10. });
  11. // 页面不存在时,默认跳转到首页,如果是 tabbar 页面,请使用 swan.switchTab 进行跳转
  12. swan.navigateTo({
  13. url: '/home/home'
  14. });
  15. }
  16. });

代码示例 2:等同于示例一的另一种写法

在开发者工具中预览效果

  1. // app.js
  2. App({
  3. onLaunch() {
  4. swan.onPageNotFound(function(res) {
  5. console.log(res);
  6. swan.showModal({
  7. title: '',
  8. content: JSON.stringify(res)
  9. });
  10. // 页面不存在时,默认跳转到首页,如果是 tabbar 页面,请使用 swan.switchTab 进行跳转
  11. swan.navigateTo({
  12. url: '/home/home'
  13. });
  14. });
  15. }
  16. });

代码示例 3:可根据开发者的业务逻辑调整用法

在开发者工具中预览效果

  1. Page({
  2. data: {},
  3. onTap() {
  4. swan.onPageNotFound(function(res) {
  5. console.log(res);
  6. swan.showModal({
  7. title: '',
  8. content: JSON.stringify(res)
  9. });
  10. // 页面不存在时,默认跳转到首页,如果是 tabbar 页面,请使用 swan.switchTab 进行跳转
  11. swan.navigateTo({
  12. url: '/home/home',
  13. success: res => {
  14. swan.offPageNotFound();
  15. },
  16. fail: err => {
  17. console.log('navigateTo fail');
  18. }
  19. });
  20. });
  21. swan.navigateTo({
  22. url: '/path/to/otherPage'
  23. });
  24. }
  25. });

Bug & Tip

  • 开发者可以在回调中进行页面重定向。
  • 在除了App.js的其他时机中调用swan.onPageNotFound的话,需要用swan.offPageNotFoundswan.onPageNotFound - 图4取消监听,否则会出现监听多次的情况