311 lines
10 KiB
JavaScript
311 lines
10 KiB
JavaScript
|
//desktop
|
|||
|
var isMobile = navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(android)|(webOS)/i) != null;
|
|||
|
|
|||
|
var isiPad = navigator.userAgent.match(/iPad/i) != null;
|
|||
|
|
|||
|
var isiPhone = navigator.userAgent.match(/iPhone|iPod/i) != null;
|
|||
|
|
|||
|
//baidu
|
|||
|
var isBaidu = navigator.userAgent.match('baidu') != null;
|
|||
|
|
|||
|
//QQ browser
|
|||
|
var isQQ = navigator.userAgent.match('MQQBrowser') != null;
|
|||
|
|
|||
|
//Saferi Browser
|
|||
|
var isFirefox = navigator.userAgent.match('FxiOS') != null;
|
|||
|
|
|||
|
// UC Browser
|
|||
|
var isUC = navigator.userAgent.indexOf("UCBrowser") != -1;
|
|||
|
|
|||
|
// Chrome 1+
|
|||
|
var isChrome = navigator.userAgent.match('CriOS') != null;
|
|||
|
|
|||
|
//xiaomi
|
|||
|
var isXiaomi = navigator.userAgent.match('XiaoMi') != null;
|
|||
|
|
|||
|
var isLine = navigator.userAgent.match('Line') != null;
|
|||
|
|
|||
|
// Safari 3.0+ "[object HTMLElementConstructor]"
|
|||
|
var isSafari = navigator.userAgent.match('Safari') && !isBaidu && !isFirefox && !isQQ && !isChrome && !isUC && !isXiaomi;
|
|||
|
|
|||
|
var isAndroid = /android/i.test(navigator.userAgent || navigator.vendor || window.opera);
|
|||
|
|
|||
|
var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
|
|||
|
|
|||
|
// iPhone X、iPhone XS
|
|||
|
var isIPhoneX = /iphone/gi.test(window.navigator.userAgent) && window.devicePixelRatio && window.devicePixelRatio === 3 && window.screen.width === 375 && window.screen.height === 812;
|
|||
|
// iPhone XS Max
|
|||
|
var isIPhoneXSMax = /iphone/gi.test(window.navigator.userAgent) && window.devicePixelRatio && window.devicePixelRatio === 3 && window.screen.width === 414 && window.screen.height === 896;
|
|||
|
// iPhone XR
|
|||
|
var isIPhoneXR = /iphone/gi.test(window.navigator.userAgent) && window.devicePixelRatio && window.devicePixelRatio === 2 && window.screen.width === 414 && window.screen.height === 896;
|
|||
|
// iPhone SE
|
|||
|
var isIPhoneSE = /iphone/gi.test(window.navigator.userAgent) && window.devicePixelRatio && window.devicePixelRatio === 2 && window.screen.width === 320 && window.screen.height === 568;
|
|||
|
|
|||
|
/**解析網址參數 */
|
|||
|
var requests = GetUrlRequest();
|
|||
|
|
|||
|
/**放置LOGO圖 */
|
|||
|
var a = SetLogo();
|
|||
|
|
|||
|
function preventDefault(e) {
|
|||
|
e = e || window.event;
|
|||
|
if (e.preventDefault) {
|
|||
|
e.preventDefault();
|
|||
|
}
|
|||
|
e.returnValue = false;
|
|||
|
}
|
|||
|
|
|||
|
function nopreventDefault(e) {
|
|||
|
e = e || window.event;
|
|||
|
if (e.preventDefault) {
|
|||
|
e.preventDefault();
|
|||
|
}
|
|||
|
e.returnValue = true;
|
|||
|
}
|
|||
|
|
|||
|
function requestFullScreen() {
|
|||
|
let el = window.document.body;
|
|||
|
let rfs = el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen || el.msRequestFullscreen;
|
|||
|
if (typeof rfs != "undefined" && rfs) {
|
|||
|
rfs.call(el);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function cancelFullScreen() {
|
|||
|
let el = window.document;
|
|||
|
let rfs = el.exitFullscreen || el.mozCancelFullScreen || el.webkitExitFullscreen || el.msExitFullscreen;
|
|||
|
if (typeof rfs != "undefined" && rfs) {
|
|||
|
rfs.call(el);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function isiPhoneX() {
|
|||
|
var t = window.devicePixelRatio || 1,
|
|||
|
e = {
|
|||
|
width: window.screen.width * t,
|
|||
|
height: window.screen.height * t
|
|||
|
};
|
|||
|
return iOS && 1125 === e.width && 2436 === e.height;
|
|||
|
}
|
|||
|
|
|||
|
function SetLogo() {
|
|||
|
var lan = "zh-ch";
|
|||
|
if (requests["language"]) {
|
|||
|
lan = requests["language"];
|
|||
|
}
|
|||
|
var splash = document.getElementById("splash");
|
|||
|
if (!requests["logo"]) {
|
|||
|
splash.className = "default" + " L " + lan + " L pos";
|
|||
|
} else {
|
|||
|
splash.className = "default_" + requests["logo"] + " L pos";
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function GetUrlRequest() {
|
|||
|
var url = window.location.search;
|
|||
|
var theRequest = [];
|
|||
|
if (url.indexOf("?") != -1) {
|
|||
|
var str = url.substr(1);
|
|||
|
var strs = str.split("&");
|
|||
|
for (var i = 0; i < strs.length; i++) {
|
|||
|
theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
|
|||
|
}
|
|||
|
}
|
|||
|
return theRequest;
|
|||
|
}
|
|||
|
|
|||
|
function CheckWebPageBack() {
|
|||
|
if ((navigator.userAgent.indexOf('MSIE') >= 0) && (navigator.userAgent.indexOf('Opera') < 0)) { // IE
|
|||
|
if (history.length > 0) {
|
|||
|
window.history.go(-1);
|
|||
|
} else {
|
|||
|
window.close();
|
|||
|
}
|
|||
|
} else {
|
|||
|
//非IE瀏覽器
|
|||
|
if (navigator.userAgent.indexOf('Firefox') >= 0 ||
|
|||
|
navigator.userAgent.indexOf('Opera') >= 0 ||
|
|||
|
navigator.userAgent.indexOf('Safari') >= 0 ||
|
|||
|
navigator.userAgent.indexOf('Chrome') >= 0 ||
|
|||
|
navigator.userAgent.indexOf('WebKit') >= 0) {
|
|||
|
if (window.history.length > 2) {
|
|||
|
window.history.go(-1);
|
|||
|
} else {
|
|||
|
window.close();
|
|||
|
}
|
|||
|
} else {
|
|||
|
//未知的瀏覽器
|
|||
|
if (history.length > 1) {
|
|||
|
window.history.go(-1);
|
|||
|
} else {
|
|||
|
window.close();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**網頁的RESIZE判斷 */
|
|||
|
/*window.onresize = function () {
|
|||
|
cc.view.setResizeCallback(this.checkGameCanvasWH());
|
|||
|
}*/
|
|||
|
|
|||
|
/**複寫達到功能縮放到一定程度不再縮放(尚未使用此功能) */
|
|||
|
function overrideSetDesignResolutionSize(width, height, resolutionPolicy) {
|
|||
|
if (!(width > 0 || height > 0)) {
|
|||
|
cc.logID(2200);
|
|||
|
return;
|
|||
|
}
|
|||
|
cc.view.setResolutionPolicy(resolutionPolicy);
|
|||
|
var policy = cc.view._resolutionPolicy;
|
|||
|
policy && policy.preApply(this);
|
|||
|
cc.sys.isMobile && cc.view._adjustViewportMeta();
|
|||
|
cc.view._orientationChanging = true;
|
|||
|
cc.view._resizing || cc.view._initFrameSize();
|
|||
|
if (!policy) {
|
|||
|
cc.logID(2201);
|
|||
|
return;
|
|||
|
}
|
|||
|
cc.view._originalDesignResolutionSize.width = cc.view._designResolutionSize.width = width;
|
|||
|
cc.view._originalDesignResolutionSize.height = cc.view._designResolutionSize.height = height;
|
|||
|
var result = policy.apply(cc.view, cc.view._designResolutionSize);
|
|||
|
if (result.scale && 2 === result.scale.length) {
|
|||
|
cc.view._scaleX = result.scale[0] <= 1 ? result.scale[0] : 1;
|
|||
|
cc.view._scaleY = result.scale[1] <= 1 ? result.scale[1] : 1;
|
|||
|
}
|
|||
|
if (result.viewport) {
|
|||
|
result.viewport.width = result.viewport.width <= width ? result.viewport.width : width;
|
|||
|
result.viewport.height = result.viewport.height <= height ? result.viewport.height : height;
|
|||
|
var vp = cc.view._viewportRect,
|
|||
|
vb = cc.view._visibleRect,
|
|||
|
rv = result.viewport;
|
|||
|
vp.x = rv.x;
|
|||
|
vp.y = rv.y;
|
|||
|
vp.width = rv.width;
|
|||
|
vp.height = rv.height;
|
|||
|
vb.x = 0;
|
|||
|
vb.y = 0;
|
|||
|
vb.width = rv.width / cc.view._scaleX;
|
|||
|
vb.height = rv.height / cc.view._scaleY;
|
|||
|
}
|
|||
|
policy.postApply(cc.view);
|
|||
|
cc.winSize.width = cc.view._visibleRect.width;
|
|||
|
cc.winSize.height = cc.view._visibleRect.height;
|
|||
|
cc.visibleRect && cc.visibleRect.init(cc.view._visibleRect);
|
|||
|
cc.renderer.updateCameraViewport();
|
|||
|
this.emit("design-resolution-changed");
|
|||
|
}
|
|||
|
|
|||
|
/**改變CANVAS尺寸後要維持2的倍率.不然容易在縮放網頁時出現圖片接縫(顯示卡繪圖因素) */
|
|||
|
function checkGameCanvasWH() {
|
|||
|
/*if (document.getElementById("GameCanvas").width > 1422) {
|
|||
|
document.getElementById("GameCanvas").width = 1422;
|
|||
|
document.getElementById("GameCanvas").style.width = "1422px";
|
|||
|
}*/
|
|||
|
if (document.getElementById("GameCanvas").width % 2 != 0) {
|
|||
|
document.getElementById("GameCanvas").width -= 1;
|
|||
|
}
|
|||
|
/*if (document.getElementById("GameCanvas").height > 800) {
|
|||
|
document.getElementById("GameCanvas").height = 800;
|
|||
|
document.getElementById("GameCanvas").style.height = "800px";
|
|||
|
}*/
|
|||
|
if (document.getElementById("GameCanvas").height % 2 != 0) {
|
|||
|
document.getElementById("GameCanvas").height -= 1;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
window.addEventListener('load', function () {
|
|||
|
if (!iOS && !isAndroid) {
|
|||
|
return;
|
|||
|
}
|
|||
|
if (isiPhoneX()) {
|
|||
|
var r = document.querySelector("meta[name=viewport]");
|
|||
|
r.setAttribute("content", "width=device-width,user-scalable=no,initial-scale=1, minimum-scale=1,maximum-scale=1,viewport-fit=cover")
|
|||
|
}
|
|||
|
//SetSwipe();
|
|||
|
if (isAndroid) {
|
|||
|
document.body.addEventListener('touchmove', function (e) {
|
|||
|
e.preventDefault();
|
|||
|
}, {
|
|||
|
passive: false
|
|||
|
});
|
|||
|
requestFullScreen();
|
|||
|
} else if (iOS) {
|
|||
|
/*if (window.addEventListener) {
|
|||
|
window.addEventListener('scroll', onScrollEvent, false);
|
|||
|
} else {
|
|||
|
window.attachEvent('onscroll', onScrollEvent);
|
|||
|
}
|
|||
|
onScrollEvent();*/
|
|||
|
}
|
|||
|
//alert(window.navigator.userAgent)
|
|||
|
if (isUC) {
|
|||
|
alert("亲爱的玩家您好:\n建议您使用chrome或safari浏览器,以获得最佳游戏体验。")
|
|||
|
}
|
|||
|
}, false);
|
|||
|
|
|||
|
function SetSwipe() {
|
|||
|
var lan = "zh-ch";
|
|||
|
if (requests["language"]) {
|
|||
|
lan = requests["language"];
|
|||
|
}
|
|||
|
if (isAndroid) {
|
|||
|
var fullScreenClick = document.getElementById("FullScreenClick");
|
|||
|
fullScreenClick.className = "default " + lan + " pos";
|
|||
|
} else if (iOS) {
|
|||
|
var fullScreenSwipe = document.getElementById("FullScreenSwipe");
|
|||
|
fullScreenSwipe.className = "default " + lan + " pos";
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function isFullScreen() {
|
|||
|
if (isLine) {
|
|||
|
return true;
|
|||
|
}
|
|||
|
if (iOS) {
|
|||
|
/*if (isPortraitMode()) {
|
|||
|
return window.innerHeight > document.documentElement.clientHeight;
|
|||
|
} else {
|
|||
|
return window.innerHeight >= document.documentElement.clientHeight;
|
|||
|
}*/
|
|||
|
} else {
|
|||
|
var doc = window.document;
|
|||
|
var isFullScreen = !(!doc.fullscreenElement && !doc.mozFullScreenElement && !doc.webkitFullscreenElement && !doc.msFullscreenElement);
|
|||
|
return isFullScreen;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function onScrollEvent() {
|
|||
|
if (isFullScreen()) {
|
|||
|
displayGame();
|
|||
|
} else {
|
|||
|
displayFinger();
|
|||
|
}
|
|||
|
setTimeout(function () {
|
|||
|
window.scrollTo(0, 0);
|
|||
|
window.scroll(0, 0);
|
|||
|
if (document.documentElement.scrollTop) {
|
|||
|
document.documentElement.scrollTop = 0;
|
|||
|
}
|
|||
|
if (document.body.scrollTop) {
|
|||
|
document.body.scrollTop = 0;
|
|||
|
}
|
|||
|
}, 200);
|
|||
|
}
|
|||
|
|
|||
|
function displayFinger() {
|
|||
|
document.getElementById("ScreenRotation").style.display = "none";
|
|||
|
/*if (isAndroid) {
|
|||
|
document.getElementById("FullScreenClick").style.display = "block";
|
|||
|
} else if (iOS) {
|
|||
|
document.getElementById("FullScreenSwipe").style.display = "block";
|
|||
|
}*/
|
|||
|
}
|
|||
|
|
|||
|
function displayGame() {
|
|||
|
document.getElementById("ScreenRotation").style.display = "none";
|
|||
|
if (isAndroid) {
|
|||
|
document.getElementById("FullScreenClick").style.display = "none";
|
|||
|
} else if (iOS) {
|
|||
|
document.getElementById("FullScreenSwipe").style.display = "none";
|
|||
|
}
|
|||
|
}
|