zoukankan      html  css  js  c++  java
  • 简易解决微信页面重定向,关闭微信浏览器页面,进来不浪费时间。

    微信浏览器页面获得用户的code需调用微信的API,并且进行一个重定向的页面跳转。

    以下是重定向的JS代码:

    var wxCode = getQueryString("code");

    $(function(){

      /*监控用户按返回的方法*/

      function pushHistory() {
        var state = {
          title: "title",
          url: "#"
        };
        window.history.pushState(state, "title", "#");
      }
      pushHistory();
      window.addEventListener('popstate', function (e) {
        //在此输入用户点击返回后触发的关键代码,简单点就是下面所述的红色代码。
      }, false);

    if ((wxCode == null || wxCode.trim().length <= 0)) {
    var url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=微信的APPID&redirect_uri=' + encodeURIComponent(window.location) + '&response_type=code&scope=snsapi_base&state=STATE%23wechat_redirect&connect_redirect=1#wechat_redirect';
    window.location.href = url;
    } else { //获取code后干想干的事情 。。。 }

    });

    用户初次进入此页面,url上没有code的值,就会get调用微信API,然后刷新当前页面并在url后面拼接?code=用户的code值。

    这段代码给我造成了困扰:在微信浏览器中打开这个网页,每次点返回按钮都会刷新url,从而丢失code,然后再次调用微信API,无限循环。

    应用场景和解决方案:(根据业务需求来选择解决方案)

    1、场景:A、B 两个页面,A页面点击跳转到B页面,B页面放当前重定向代码。这时要在B页面JS中加监控用户的点返回的方法,用户点击返回则回退2步 window.history.back(-2);

     这时就回到了第一个页面,用户再次点击返回,就能关闭微信浏览器了,避免在B页面死循环定向。

    2、场景:一个页面,重定向代码也放在其JS中。在微信中可以用内置的JS( jweixin-1.2.0.js )与方法 WeixinJSBridge.call('closeWindow');

    注:这里有个坑,由于不是自己的玩意,他什么时候加载成功了,我这个方法才生效(我测试是差不多页面加载好过1秒多点点)。

    如果页面进去加载一秒差不多,刚好微信的内置JS没有加载完,就点击返回就会无效,之后继续点击返回都会无效,因为没有没有绑定好方法。如果手速慢点就有效,搞得和抽奖一样。

    这时我耍了一个小聪明,直接把微信的js下下来直接引用,结果并没有什么卵用。由于是内置的,如果你还在JS中写在线加载微信JS就没有必要了。

    于是我就写在了定时器中,定时循环任务,当我点击返回之后,就算我在微信JS未完成的时候调用这个方法无效,但是隔个几毫秒,继续调用,这个JS一加载完成,然后方法绑定上去就能自动退出浏览器。 

    window.setInterval(function(){parent.WeixinJSBridge.call('closeWindow');},200); 


    以上都是个人陋闻,如有问题有劳指正,大家共同学习共同进步。如果有帮助到您,希望您能给动个小手点一下右下方的推荐,谢谢。

  • 相关阅读:
    数据挖掘常用算法
    helloworld
    sqlserver 变量级基本语法
    存储过程
    动态代理jdk 和cglib
    创建表添加约束
    sqlserver 子查询
    创建数据库
    javaScript实现同意等待——心得
    JavaScript关于不要复制黏贴代码的心得
  • 原文地址:https://www.cnblogs.com/yuqiuyeyun/p/11098682.html
Copyright © 2011-2022 走看看