解决淘宝sui插件后退bug

淘宝的sui插件在微信里,第一次访问没有问题,跳转走以后,再后退回来, 插件就无法正常加载。

一下是官方给出的说法

切换到的新页面中的 js 不执行

由于浏览器安全性考虑的限制以及可能的 js 重复执行或覆盖的问题,目前是不支持运行 ajax 载入的页面里面的 js 的,参考 #120

解决方法:所有页面都引用相同的 js,而这个 js 里面包含了所有的逻辑,事件部分使用委托来绑定。

因为我是做后台的,有些地方是JS和PHP混写的。 吧JS单独出去处理起来比较麻烦。

考虑到只有微信出现这样的问题。 

设: 从A页面访问B页面 再从B页面后退到A页面

解决办法:

在A页面 JS最头代码加入

    <?php if(!$this->isapp) :?>
    sessionStorage.setItem("_refresh",'1');
    <?php endif;?>

在A页面跳转B页面的连接上 加事件  参考代码如下

<a class="head_r external" href="?a=3" onclick="return jumpSearch()"></a>

    function jumpSearch(){
        <?php if(!$this->isapp) :?>
        sessionStorage.removeItem("_refresh");
        <?php endif;?>
        return true;
    }

现在到了B页面 那么做一下判断 同样是加载JS最顶部

    <?php if(!$this->isapp) :?>
    if(typeof(sessionStorage.getItem("_refresh")) != 'object'){
        sessionStorage.removeItem("_refresh");
        location.reload(true);
    }

如果你不是通过A连接跳转到B页面的, 就会存在sessionStorage _refresh key

存在这个key 就证明用户是通过后退过来的, 此时强制刷新浏览器问题解决。 

PS:只有微信端有此问题,不是最好的解决办法。没有采用淘宝官方的解决方案,。

原文地址:https://www.cnblogs.com/onephp/p/5507752.html