天下网吧 >> 网吧天地 >> 天下码农 >> 前端开发 >> 正文

H5、PC WEB端判断是否小程序环境,兼容IE环境代码

故障现象:

最近在写判断是否小程序环境的代码,发现自己直接复制网上的代码,跳进了一个坑里去了。

导致出现的故障为:修改后的页面在IE浏览器里完全不正常了,JS都没有执行了。

现在把跳坑和填坑的经历分享出来。其实也不算是坑,怪自己没注意看代码,直接复制过来就用的原因吧。

下面是网上照搬的源码:


<script src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
<script>
    var ua = navigator.userAgent.toLowerCase();
    // 判断是否在微信浏览器内
    if (ua.match(/MicroMessenger/i)=="micromessenger") {
        wx.miniProgram.getEnv((res) => {
            if (res.miniprogram) {
                console.log('在小程序内');
            } else {
                console.log('不在小程序内');
            }
        })
    } else {
        console.log('不在微信浏览器内');
    }
</script>


这个代码在Chrome内核的浏览器下是没有任何问题的。

但是在Win7下的IE11和IE11以下的版本问题就大了,会直接报错,导致后面的js都不执行。

代码分析:

这段代码在逻辑和技术上都没问题,问题在于IE的兼容性问题。这写法是典型的ES6写法,使用了箭头函数。

但是IE目前是不支持箭头函数的,这样就导致了出错。语法错误!!!

修改后的代码为:


<script src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
<script>
    var ua = navigator.userAgent.toLowerCase();
    // 判断是否在微信浏览器内
    if (ua.match(/MicroMessenger/i)=="micromessenger") {
        wx.miniProgram.getEnv(function (res) {
            if (res.miniprogram) {
                console.log('在小程序内');
            } else {
                console.log('不在小程序内');
            }
        })
    } else {
        console.log('不在微信浏览器内');
    }
</script>


其实就是修改了箭头函数为正常的JS原生函数,搞定!

修改后,IE下的页面就正常,可以继续愉快的玩耍啦!

本文来源:天下网吧 作者:天下码农

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系Email:support@txwb.com,系统开号,技术支持,服务联系QQ:1175525021本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下
  • 本周热门
  • 本月热门
  • 阅读排行