Egret社区

[Egret Wing] 底层代码中关于pc和mobile的判断逻辑

2019-6-28 17:45
1610
产品 Egret Engine 版本 5.2.13
复现概率 100% 平台 iOS 5.2.13
复现步骤 部分苹果手机,浏览器的navigator.userAgent是没mobile这个字段的。导致egret.Capabilities.os 是Mac OS。
egret.web.js文件中
问题描述 底层判定是否是移动端,只判断navigator.userAgent里面是否有mobile和android字段。
难道iphone ,ipad和ipod算是 mac桌面系统么。
错误代码 WebCapability.detect = function () {
var capabilities = egret.Capabilities;
var ua = navigator.userAgent.toLowerCase();
capabilities["isMobile" + ""] = (ua.indexOf('mobile') != -1 || ua.indexOf('android') != -1);
if (capabilities.isMobile) {
if (ua.indexOf("windows") < 0 && (ua.indexOf("iphone") != -1 || ua.indexOf("ipad") != -1 || ua.indexOf("ipod") != -1)) {
capabilities["os" + ""] = "iOS";
}
else if (ua.indexOf("android") != -1 && ua.indexOf("linux") != -1) {
capabilities["os" + ""] = "Android";
}
else if (ua.indexOf("windows") != -1) {
capabilities["os" + ""] = "Windows Phone";
}
}
else {
if (ua.indexOf("windows nt") != -1) {
capabilities["os" + ""] = "Windows PC";
}
else if (ua.indexOf("mac os") != -1) {
capabilities["os" + ""] = "Mac OS";
}
}
var language = (navigator.language || navigator["browserLanguage"]).toLowerCase();
var strings = language.split("-");
if (strings.length > 1) {
strings[1] = strings[1].toUpperCase();
}
capabilities["language" + ""] = strings.join("-");
WebCapability.injectUIntFixOnIE9();
};
BUG截图

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部