建议 web-view的user-agent中能加入特殊字符以区分微信自带浏览器
或者开发者可以自己设定部分header信息
我的需求是在页面加载前使用服务器程序来判断是否是小程序,还没到页面加载后用js来判断这一步
在URL 里加特殊的字符串这个方法是我现在在用的方法,但是很不方便,如果遇到页面里有其他页面的链接,就很麻烦了
所以还是建议能通过user-agent中加入特殊字符的方式,方便开发
-------
有官方用户回复建议:第一次在web-view src上带多一个参数,服务器识别到这个参数后种一个cookie呢,后续请求识别这个cookie即可。cookie的有效期可以只是当前session
我这边实际测试的结果是:设置cookie方法不行,我实际测试了,即使cookie有效期是当前session的情况下,在小程序webview中设置的cookie,在同一进程微信浏览器中打开,这个cookie仍然存在
根源还是在 小程序webview和微信本身浏览器没有做区分
你好,感谢反馈,目前安卓有在ua上做区分,iOS因系统原因暂时还没有,对于你这种场景,我们会考虑下看怎么支持到。
倒不是说必需是ua,如果能通过其他非js途径也是可以的,比如web-view可以添加自定义的header信息,我这边有开发ios app经验的同事,他们就是在webview中添加了自定义的header信息来传递已登录用户信息,可以参考,这个问题我觉得还是很重要的,毕竟小程序webview和微信本身浏览器本身从业务上来说就不是通用的
或者换个需求, 小程序web-view和微信自带浏览器从业务逻辑上来说是不通用的,那么session、cookie也应该是不通用的才行
function isInWechatMP() {
return navigator.userAgent.match(/miniprogram/i) || window.__wxjs_environment === 'miniprogram'
}
这样的检测方式,是不是覆盖了安卓和iOS,期待官方答复!
是的
遇到同样的问题,也采用种cookie的方法,但是清cookie可就不太好搞了
@黄思程 我们也有此需求。我们的公众号和小程序 webview 是共用一个 H5,如果能在 UA 上做区分,就能在 nginx 层做多入口。比如公众号需要加载地图 SDK,小程序 webview 无需加载地图 SDK(因为小程序里面地图是用小程序地图组件做的),可以提升小程序 webview 加载速度。
有一个疑问
为什么我用 微信开发者工具查看 userAgent 是有 miniprogram 的标识 但是真机 ios 就不可以
或者换个需求,小程序web-view和微信自带浏览器从业务逻辑上来说是不通用的,那么session、cookie也应该是不通用的才行
始终认为在小程序webview和小程序本体之间搞jsBridge才是正途……