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";
|
||
}
|
||
} |