raxjs / universal-api

Universal apis for web and miniapps.
https://universal-api.js.org/
266 stars 63 forks source link

判断微信小程序环境应该与 web 环境互斥 #271

Closed icky-forever closed 2 years ago

icky-forever commented 2 years ago

微信小程序环境判断: export const isWeChatMiniProgram = !isByteDanceMicroApp && typeof wx !== 'undefined' && wx !== null && (typeof wx.request !== 'undefined' || typeof wx.miniProgram !== 'undefined');

web 环境判断: export const isWeb = typeof window !== 'undefined' && 'onload' in window;

情景是:如果在微信小程序中打开 H5 页面,并且需要用到一些 jweixin 的 API,就会在 window 对象添加一个 wx 属性,从而命中 isWeChatMiniProgram 环境判断: <script type=\"text/javascript\" src=\"https://res.wx.qq.com/open/js/jweixin-1.3.2.js\"></script>

建议微信小程序环境判断改为: export const isWeChatMiniProgram = !isWeb && !isByteDanceMicroApp && typeof wx !== 'undefined' && wx !== null && (typeof wx.request !== 'undefined' || typeof wx.miniProgram !== 'undefined');

ChrisCindy commented 2 years ago

微信小程序中的 H5 webview 环境用户可以用 isWeChatMiniProgram && isWeb 来判断。uni env 是从本质入手判断环境而不夹带业务逻辑属性的。