console
(function () {
var i;
var textarea = document.createElement("textarea");
var p = document.createElement("p");
var canvas = document.createElement("canvas");
var img = document.createElement("img");
var defaultStyle = {
position: "absolute",
padding: "0",
border: "0",
width: "0",
height: "0",
outline: "none"
}
for (i in defaultStyle) {
}
document.body.appendChild(textarea);
document.body.appendChild(p);
document.body.appendChild(canvas);
var Result = {
"PREFER_COLOR_SCHEME_DARK": "prefer-color-scheme-dark",
"FORCE_COLOR": "force-color",
"SUGGEST_COLOR": "suggest-color",
"CSS_FILTERS": "filters",
"FORCE_RENDER": "force-render"
}
var detectors = [
function detectPrefer(cb) {
if (window.matchMedia) {
return cb(window.matchMedia(
"(prefers-color-scheme: dark)"
).matches ? Result.PREFER_COLOR_SCHEME_DARK : false);
}
return cb(false);
},
function detectCSS(cb) {
if (window.getComputedStyle) {
var curStyle = window.getComputedStyle(textarea);
var foreLight = extractLight(curStyle.color);
var backLight = extractLight(curStyle.backgroundColor);
curStyle = window.getComputedStyle(p);
var foreLight2 = extractLight(curStyle.color);
if (foreLight < backLight || foreLight2 < backLight) return cb(false);
p.style.backgroundColor = "white";
p.style.color = "black";
foreLight = extractLight(curStyle.color);
backLight = extractLight(curStyle.backgroundColor);
if (foreLight > backLight) {
cb( Result.FORCE_COLOR);
} else {
cb(Result.SUGGEST_COLOR);
}
return;
}
cb(false);
},
function detectRender(cb){
img.src = "";
}
];
function extractLight(cssRgbStr) {
var reg = /^[rgba(,) ]+([-0-9.]+)[(,) ]+([-0-9.]+)[(,) ]+([-0-9.]+)[(,); ]+/i;
var regRes = reg.exec(cssRgbStr);
if (!regRes) {
throw new Error("不规范的 CSS 颜色字符串。");
}
var r = +regRes[1], g = +regRes[2], b = +regRes[3];
var y = 0.2126729 * r + 0.7151522 * g + 0.0721750 * b;
y = y / 255;
if (y > 216 / 24389) {
return 116 * Math.pow(y, 1 / 3) - 16;
} else {
return 116 * (12 / 841 * y + 4 / 29) - 16;
}
}
var result = false;
function doDetect(res) {
if(res) {
console.log(res);
return;
}
try {
var fn = detectors[0];
if(!fn) return doDetect("light");
detectors.shift();
fn(doDetect);
} catch (e) {
console.error(e);
throw e;
}
}
window.onload = function () {
setTimeout(doDetect, 300);
}
})();
正在检测您的浏览器颜色配置......