dcagent
Version:
an analytics sdk for HTML5 app and web game
57 lines (46 loc) • 1.82 kB
JavaScript
/**
* 客户端特性检测以及设备环境识别
*/
import {window, document, location} from '../globals.js'
import hasDOM from '../libs/hasDOM.js'
import {engine} from './engine.js'
import * as defaults from '../defaults.js'
var hasStorage = !!window.localStorage || engine.isEgret || engine.isCocos || engine.isLayabox
var isStandardBrowser = hasDOM()
var hasCookie = isStandardBrowser && ('cookie' in document)
var protocol = location.protocol === 'https:' ? 'https:' : 'http:'
var useXDR = !!window.XDomainRequest
var screenObj = window.screen || {}
var userAgent = (window.navigator && window.navigator.userAgent) || ''
// 未知分辨率
var unknownWH = '0*0'
var resolution = screenObj.width && (screenObj.width + '*' + screenObj.height)
/**
* 如果运行环境不是浏览器
* 需要SDK初始化时指定brand,osVersion,platform
*/
var brand = '', osVersion = '', platform = defaults.DEFAULT_PLATFORM
if (!userAgent) {
var platforms = ['ios', 'android']
if (engine.layabox) {
var deviceInfo = window.layabox.getDeviceInfo() || {}
resolution = deviceInfo.resolution || unknownWH
brand = deviceInfo.phonemodel
platform = platforms.indexOf(deviceInfo.os.toLowerCase())
osVersion = (deviceInfo.os + ' ' + deviceInfo.osversion).toLowerCase()
} else if (engine.cocos) {
var rect = window.cc.view.getViewPortRect() || {}
resolution = rect.width + '*' + rect.height
platform = platforms.indexOf(window.cc.sys.os.toLowerCase())
// brand和os version也无法取得
}
// 未知平台
if ([0, 1, 2, 3].indexOf(platform) === -1) {
platform = defaults.DEFAULT_PLATFORM
}
}
if (!resolution) {
resolution = unknownWH
}
var device = {resolution, brand, osVersion, platform}
export {hasStorage, isStandardBrowser, hasCookie, protocol, useXDR, device}