Skip to content

Commit e7828db

Browse files
authored
Merge pull request #3437 from pandamicro/develop
Improve browser detection for QQ
2 parents f83d288 + 6f82b66 commit e7828db

File tree

1 file changed

+20
-11
lines changed

1 file changed

+20
-11
lines changed

CCBoot.js

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1610,6 +1610,7 @@ var _initSys = function () {
16101610
sys.BROWSER_TYPE_WECHAT = "wechat";
16111611
sys.BROWSER_TYPE_ANDROID = "androidbrowser";
16121612
sys.BROWSER_TYPE_IE = "ie";
1613+
sys.BROWSER_TYPE_QQ_APP = "qq"; // QQ App
16131614
sys.BROWSER_TYPE_QQ = "qqbrowser";
16141615
sys.BROWSER_TYPE_MOBILE_QQ = "mqqbrowser";
16151616
sys.BROWSER_TYPE_UC = "ucbrowser";
@@ -1727,13 +1728,13 @@ var _initSys = function () {
17271728
/* Determine the browser type */
17281729
(function(){
17291730
var typeReg1 = /micromessenger|mqqbrowser|sogou|qzone|liebao|ucbrowser|360 aphone|360browser|baiduboxapp|baidubrowser|maxthon|mxbrowser|trident|miuibrowser/i;
1730-
var typeReg2 = /qqbrowser|chrome|safari|firefox|opr|oupeng|opera/i;
1731+
var typeReg2 = /qqbrowser|qq|chrome|safari|firefox|opr|oupeng|opera/i;
17311732
var browserTypes = typeReg1.exec(ua);
17321733
if(!browserTypes) browserTypes = typeReg2.exec(ua);
17331734
var browserType = browserTypes ? browserTypes[0] : sys.BROWSER_TYPE_UNKNOWN;
17341735
if (browserType === 'micromessenger')
17351736
browserType = sys.BROWSER_TYPE_WECHAT;
1736-
else if (browserType === "safari" && (ua.match(/android.*applewebkit/)))
1737+
else if (browserType === "safari" && isAndroid)
17371738
browserType = sys.BROWSER_TYPE_ANDROID;
17381739
else if (browserType === "trident")
17391740
browserType = sys.BROWSER_TYPE_IE;
@@ -2707,7 +2708,7 @@ cc.game = /** @lends cc.game# */{
27072708
},
27082709

27092710
_initEvents: function () {
2710-
var win = window, self = this, hidden, visibilityChange, _undef = "undefined";
2711+
var win = window, hidden;
27112712

27122713
this._eventHide = this._eventHide || new cc.EventCustom(this.EVENT_HIDE);
27132714
this._eventHide.setUserData(this);
@@ -2720,18 +2721,21 @@ cc.game = /** @lends cc.game# */{
27202721

27212722
if (!cc.isUndefined(document.hidden)) {
27222723
hidden = "hidden";
2723-
visibilityChange = "visibilitychange";
27242724
} else if (!cc.isUndefined(document.mozHidden)) {
27252725
hidden = "mozHidden";
2726-
visibilityChange = "mozvisibilitychange";
27272726
} else if (!cc.isUndefined(document.msHidden)) {
27282727
hidden = "msHidden";
2729-
visibilityChange = "msvisibilitychange";
27302728
} else if (!cc.isUndefined(document.webkitHidden)) {
27312729
hidden = "webkitHidden";
2732-
visibilityChange = "webkitvisibilitychange";
27332730
}
27342731

2732+
var changeList = [
2733+
"visibilitychange",
2734+
"mozvisibilitychange",
2735+
"msvisibilitychange",
2736+
"webkitvisibilitychange",
2737+
"qbrowserVisibilityChange"
2738+
];
27352739
var onHidden = function () {
27362740
if (cc.eventManager && cc.game._eventHide)
27372741
cc.eventManager.dispatchEvent(cc.game._eventHide);
@@ -2742,10 +2746,15 @@ cc.game = /** @lends cc.game# */{
27422746
};
27432747

27442748
if (hidden) {
2745-
document.addEventListener(visibilityChange, function () {
2746-
if (document[hidden]) onHidden();
2747-
else onShow();
2748-
}, false);
2749+
for (var i=0; i<changeList.length; i++) {
2750+
document.addEventListener(changeList[i], function (event) {
2751+
var visible = document[hidden];
2752+
// QQ App
2753+
visible = visible || event["hidden"];
2754+
if (visible) onHidden();
2755+
else onShow();
2756+
}, false);
2757+
}
27492758
} else {
27502759
win.addEventListener("blur", onHidden, false);
27512760
win.addEventListener("focus", onShow, false);

0 commit comments

Comments
 (0)