swan.onPageNotFound

基础库 3.60.2 开始支持,低版本需做兼容处理

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

方法参数

Function callback

callback 参数说明

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

callback 返回参数说明

属性类型说明

path

String

不存在页面的路径

query

Object

打开不存在页面的 query 参数

isEntryPage

Boolean

是否本次启动的首个页面(例如从分享等入口进来,首个页面是开发者配置的分享页面)

示例

扫码体验

代码示例

百度智能小程序

请使用百度APP扫码

图片示例

swan.onPageNotFound - 图2

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

在开发者工具中打开

在开发者工具中打开

在 WEB IDE 中打开

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

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

在开发者工具中打开

在开发者工具中打开

在 WEB IDE 中打开

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

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

在开发者工具中打开

在开发者工具中打开

在 WEB IDE 中打开

  • JS
  1. Page({
  2. data: {},
  3. onTap() {
  4. swan.onPageNotFound(function(res) {
  5. console.log('onPageNotFound success',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. console.log('navigateTo success');
  15. },
  16. fail: err => {
  17. console.log('navigateTo fail');
  18. },
  19. complete() {
  20. swan.offPageNotFound();
  21. }
  22. });
  23. });
  24. swan.navigateTo({
  25. url: '/path/to/otherPage'
  26. });
  27. }
  28. });

Bug & Tip

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