首页 > 其他分享 >企业微信内置应用的h5页面,内部按钮关闭页面

企业微信内置应用的h5页面,内部按钮关闭页面

时间:2023-09-20 11:36:36浏览次数:47  
标签:浏览器 微信 WeixinJSBridge h5 closeWindow 关闭 页面

以下内容非原创,遇到这个问题,查到这位大佬的做法,所以记录下来,以便于之后自己查阅。

原文链接:https://blog.csdn.net/qq_22182989/article/details/125674826

遇到的问题:

在做vue项目时,需求是要在微信环境内。

微信h5页面要求前端控制退出时关闭页面功能。

如果是在微信外其他浏览器的话。可以直接使用Window.close即可关闭网页。

但是在微信环境却无法直接使用这个方法。

众所周知,微信小程序的js中不能使用window对象以及document对象。

什么原因呢?

难道他们真的不存在吗?事实并非如此。

这个问题稍后讨论。我会再写一篇文章专门说明这个问题。

今天暂时先解决问题:

解决办法:
温馨提示:有些同学照着一模一样的代码复制粘贴的。但是在微信开发者工具里面模拟微信环境操作。但是还是报错了:

因为必须要在真机环境才能成功!

WeixinJSBridge.call("closeWindow")
完整代码:

<script>
import {mapGetters} from 'vuex';
 
export default {
  data() {
    return {
      showNative: false,
      browserType: '', // 浏览器环境类型,wxpay:微信环境,alipay:支付宝环境
    }
  },
  computed: {
    ...mapGetters(['userInfo'])
  },
  methods: {
    logout() {
      console.log(window);
      console.log(this)
      if (this.browserType === "wxpay") {
        this.$toast('即将关闭页面!');
        this.closeWindow()
      } else {
        this.$store.dispatch('user/logout')
      }
    },
    /**
     * 如果是微信环境。退出就关闭窗口
     */
    closeWindow() {
      if (document.addEventListener) {
        document.addEventListener(
            "WeixinJSBridgeReady",
            function () {
              WeixinJSBridge.call("closeWindow")
              parent.WeixinJSBridge.call('closeWindow')
            },
            false
        );
      } else if (document.attachEvent) {
        document.attachEvent(
            "onWeixinJSBridgeReady", function () {
              //这个可以关闭ios系统的手机
              WeixinJSBridge.call("closeWindow");
            }
        );
      }
      // 必须加最后这一句,否则关闭不了
      WeixinJSBridge.call("closeWindow")
    },
    // 判断浏览器类型
    checkBrowser() {
      const browser = navigator.userAgent.toLowerCase();
      if (browser.match(/Alipay/i) == "alipay") {
        // 支付宝环境
        return "alipay";
      } else if (browser.match(/MicroMessenger/i) == "micromessenger") {
        // 微信内置浏览器
        return "wxpay";
      }
      // 其他h5环境
      return "";
    },
  },
  mounted() {
    // 判断环境
    // 获取浏览器类型,微信浏览器,支付宝浏览器,普通手机浏览器
    this.browserType = this.checkBrowser();
  },
  created() {
 
  }
}
</script>

什么是WeixinJSBridge?
WeixinJSBridge不同于jssdk,不需要鉴权,是微信内置浏览器自带的接口。

大致有以下几个有用的知识点(各功能具体方法请看原文):

分享给好友
分享到朋友圈
分享到微博
隐藏下方工具栏
隐藏微信右上角分享按钮(并非隐藏三个点,而是里面的菜单)
关闭浏览器回到公众号对话窗口
Vue中只需要定义好方法,在页面初始化中调用即可。

注意:(WeixinJSBridge只能在微信环境内打开的网页有效)
————————————————
版权声明:本文为CSDN博主「南北极之间」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_22182989/article/details/125674826

标签:浏览器,微信,WeixinJSBridge,h5,closeWindow,关闭,页面
From: https://www.cnblogs.com/sinceForever/p/17716882.html

相关文章

  • 【WCH蓝牙系列芯片】-基于CH582开发板—四种低功耗模式电流测试
    ---------------------------------------------------------------------------------------------------------------------在WCH沁恒官方提供的CH583的EVT资源包中,找到BLE文件中找到PW这个工程文件,这是一个系统睡眠模式并唤醒例程;其中GPIOA_5作为唤醒源,共4种功耗等级。芯片提......
  • 浅尝IM方案在H5活动场景中的应用
    介绍了在对数据实时性要求较高的业务场景中,使用IM方案来实现数据的实时更新,以提升用户体验。从需求出发,介绍了常用的数据更新方案(接口轮询、长轮询、SSE、HTTP/2ServerPush)以及它们的优缺点。详细介绍了WebSocket协议的基本原理和工作流程,并给出了Node.js和浏览器端的实现......
  • 基于微信小程序的在线点餐平台
    如今的信息时代,对信息的共享性,信息的流通性有着较高要求,因此传统管理方式就不适合。为了让管理模式进行升级,也为了更好的维护信息,在线点餐(堂食)平台的开发运用就显得很有必要。并且通过开发在线点餐(堂食)平台,不仅可以让所学的微信小程序技术得到实际运用,也可以掌握MySQL的使用方法,对......
  • 基于微信平台的报刊订阅小程序
    计算机网络发展到现在已经好几十年了,在理论上面已经有了很丰富的基础,并且在现实生活中也到处都在使用,可以说,经过几十年的发展,互联网技术已经把地域信息的隔阂给消除了,让整个世界都可以即时通话和联系,极大的方便了人们的生活。所以说,基于微信平台的报刊订阅小程序用计算机技术来进行......
  • 页面层次拖拽效果
    <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <htmlxmlns="http://www.w3.org/1999/xhtml"> <headrunat="server"> <......
  • dedebiz内容页面获取当前页面路径的标签
    dedebiz获取当前页面路径的标签,仅在内容页使用,栏目页没有效果的。{dede:fieldname='arcurl'/}在栏目页想获取当前栏目的路径及名称的话,就要用下面这个标签。{dede:type}<ahref="[field:typelink/]">[field:typename/]</a>{/dede:type}获取网站所有栏目名称及路径列......
  • 基于微信小程序的在线考试系统设计与实现-计算机毕业设计源码+LW文档
    一、研究的背景意义随着计算机的持续发展,人类进入信息化时代,各种软件和管理系统层出不穷,软件已成为提高办公质量和经济增长的重要手段,由此带来了许多新兴行业。比如在线购物,京东商城、慕课和在线学习的成功有目共睹。基于互联网的管理平台,收集和整理各类信息,这些信息以有序的方式......
  • 如何将手机上微信的文件快速传递到linux平台?
    要将手机上微信的文件快速传递到Linux平台,你可以尝试以下几种方法:1.通过USB传输:连接手机和Linux计算机,将手机设置为传输文件模式,然后在Linux上使用文件管理器访问手机的存储,从中复制所需的文件到Linux平台。2.使用第三方应用:在手机上安装支持文件传输的第三方应用,如AirDroid、Pus......
  • HarmonyOS 管理页面跳转及浏览记录导航
    历史记录导航使用者在前端页面点击网页中的链接时,Web组件默认会自动打开并加载目标网址。当前端页面替换为新的加载链接时,会自动记录已经访问的网页地址。可以通过forward()和backward()接口向前/向后浏览上一个/下一个历史记录。在下面的示例中,点击应用的按钮来触发前端页面的后......
  • springMvc页面跳转---重定向和转发
    准备工作1.导入json依赖点击查看代码<!--jsp需要依赖!jstl--><dependency><groupId>jakarta.servlet.jsp.jstl</groupId><artifactId>jakarta.servlet.jsp.jstl-api</artifactId><version>3.......