|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const FeatureDetection = { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ambientLightSensor() { |
|
|
return 'AmbientLightSensor' in window; |
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
battery() { |
|
|
return 'getBattery' in navigator; |
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
wakeLock() { |
|
|
return 'wakeLock' in navigator; |
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vr() { |
|
|
return 'getVRDisplays' in navigator || 'xr' in navigator; |
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
isSupported(featureName) { |
|
|
const detector = this[featureName]; |
|
|
if (typeof detector === 'function') { |
|
|
try { |
|
|
return detector(); |
|
|
} catch (e) { |
|
|
return false; |
|
|
} |
|
|
} |
|
|
return false; |
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
getAllSupported() { |
|
|
return { |
|
|
ambientLightSensor: this.ambientLightSensor(), |
|
|
battery: this.battery(), |
|
|
wakeLock: this.wakeLock(), |
|
|
vr: this.vr() |
|
|
}; |
|
|
} |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(function suppressFeatureWarnings() { |
|
|
|
|
|
if (window._featureWarningsSuppressed) { |
|
|
return; |
|
|
} |
|
|
|
|
|
const originalWarn = console.warn; |
|
|
const ignoredFeatures = [ |
|
|
'ambient-light-sensor', |
|
|
'battery', |
|
|
'document-domain', |
|
|
'layout-animations', |
|
|
'legacy-image-formats', |
|
|
'oversized-images', |
|
|
'vr', |
|
|
'wake-lock' |
|
|
]; |
|
|
|
|
|
console.warn = function(...args) { |
|
|
const message = args[0]?.toString() || ''; |
|
|
|
|
|
|
|
|
const isPermissionsPolicyWarning = message.includes('Unrecognized feature:') && |
|
|
ignoredFeatures.some(feature => message.includes(feature)); |
|
|
|
|
|
|
|
|
const isHFSpaceWarning = message.includes('Datasourceforcryptocurrency') && |
|
|
message.includes('Unrecognized feature:'); |
|
|
|
|
|
if (isPermissionsPolicyWarning || isHFSpaceWarning) { |
|
|
|
|
|
return; |
|
|
} |
|
|
|
|
|
|
|
|
originalWarn.apply(console, args); |
|
|
}; |
|
|
|
|
|
|
|
|
window._featureWarningsSuppressed = true; |
|
|
})(); |
|
|
|
|
|
|
|
|
if (typeof module !== 'undefined' && module.exports) { |
|
|
module.exports = FeatureDetection; |
|
|
} |
|
|
|
|
|
|
|
|
window.FeatureDetection = FeatureDetection; |
|
|
|