跳到主要内容

如何判断你的页面是在微信内置浏览器打开的

· 阅读需 2 分钟
一介布衣
全栈开发者

由于微信的种种封闭,导致在微信内置浏览器打开的页面,会把外部链接全部屏蔽掉.

所以通用的做法是,判断是微信浏览器打开的时候做一种处理方式.

非微信浏览器打开时做另外一种处理方式.

类似你想在微信打开页面里点击下载按钮,一定是不成功的.我们会友好的跳出一张引导图.

那么要做出这样的逻辑判断,我们就需要获取当前页面所在的环境是不是微信内置浏览器,如何判断?

function isWeiXin() {
var ua = window.navigator.userAgent.toLowerCase();
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
return true;
} else {
return false;
}
}

就是这样,我们利用 userAgent 来判断当前环境.

通过上面的函数,我们能轻松获取到是不是微信浏览器,然后做一些逻辑判断.

这种判断最常配合什么动作

最常见的就是在识别出微信环境之后,做一层差异化处理,比如:

  • 提示用户点击右上角在浏览器打开
  • 隐藏本来在微信里无效的下载按钮
  • 显示一张操作引导图

这样做的价值,不是单纯“识别环境”,而是避免用户在当前环境里不断点击一个注定无效的动作。

也要注意判断只是第一步

微信的内置环境规则会变,userAgent 判断也不应该被神化成永久稳定方案。更重要的是,你要先想清楚:识别出来之后具体要给用户什么更合理的后续体验。识别只是手段,交互补救才是真正的目标。

很多页面之所以在微信里让人感觉“体验很差”,并不是因为识别不到环境,而是识别到了之后没有给出正确的引导。与其让用户不断点一个不会成功的下载按钮,不如直接告诉他下一步该怎么做。把这层用户预期管理做好,往往比技术判断本身更重要。