uniapp嵌套webview,无法返回上一级?

04-11 1573阅读

uniapp嵌套webview,如何解决回退问题?

文章目录

    • uniapp嵌套webview,如何解决回退问题?
      • 遇到问题
      • 解决方式
        • 方式一
        • 方式二

          场景:

          uniapp嵌套webview,无法返回上一级?
          (图片来源网络,侵删)
          • 进入首页,自动跳转第三方应用

            遇到问题

            • 在设备上运行时,无法回退上一级,直接退出应用了;
            • 预期:一级级的返回页面;

              解决方式

              个人想到临时解决方式,欢迎老铁们可以分享其他方式

              • 进入首页index,不要先加载 web-view
              • 新建页面,例webview.vue

                方式一

                例:安卓

                index.vue

                onLoad() {
                  	uni.navigateTo({
                    	url: '/pages/webview/webview'
                  	})
                }
                

                webview.vue

                	
                		
                	
                
                

                onUnload() {
                  	// #ifdef APP-PLUS
                  	// ios退出应用方式,下面有写
                  	plus.runtime.quit(); // 强制退出应用.Android
                    // #endif
                },
                
                方式二

                个人 推荐方式一,简单一些

                • 通过标识是否已加载webview页面,定义全局变量或本地存储标识都可以
                • 在 onShow 判断是否已加载 webview 页面,已加载 ,则执行退出应用,否则跳转页面

                  App.vue

                  globalData: {
                    webShowed: false, // 标识
                  },
                  

                  index.vue

                  const app = getApp()
                  onShow() {
                   	this.handleLaunchJump();
                  }
                  

                  handleLaunchJump() {
                    let sysInfo = uni.getSystemInfoSync();
                    // 这里我处理Android、 Ios,跳转及退出方式,根据个人所需
                    if (!app.globalData.webShowed) {
                      if (sysInfo.platform === 'ios') {
                        uni.redirectTo({
                          url: this.url // '/pages/webview/webview'
                        })
                      } else {
                        uni.navigateTo({
                          url: this.url
                        })
                      }
                    } else {
                      // #ifdef APP-PLUS
                      if (sysInfo.platform === 'ios') {
                        plus.ios.import('UIApplication').sharedApplication().performSelector('exit');
                      } else {
                        plus.runtime.quit();
                      }
                      // #endif
                    }
                  }
                  

                  webview.vue

                  	
                  		
                  	
                  
                  
                  onShow() {
                    getApp().globalData.webShowed = true;
                  },
                  
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]