// IMPORTANT: Do not change the list below without review from a DOM peer! var supportedProps = [ "appCodeName", "appName", "appVersion", "globalPrivacyControl",
{ name: "gpu", isNightly: true, isSecureContext: true }, "platform", "product", "userAgent", "onLine", "language", "languages",
{ name: "locks", isSecureContext: true }, "mediaCapabilities", "hardwareConcurrency",
{ name: "storage", isSecureContext: true }, "connection", "permissions",
{ name: "serviceWorker", isSecureContext: true },
];
self.onmessage = function (event) { if (!event || !event.data) { return;
}
startTest(event.data);
};
function startTest(channelData) { // Prepare the interface map showing if a propery should exist in this build. // For example, if interfaceMap[foo] = true means navigator.foo should exist. var interfaceMap = {};
for (var prop of supportedProps) { if (typeof prop === "string") {
interfaceMap[prop] = true; continue;
}
for (var prop in navigator) { // Make sure the list is current! if (!interfaceMap[prop]) { throw"Navigator has the '" + prop + "' property that isn't in the list!";
}
}
var obj;
for (var prop in interfaceMap) { // Skip the property that is not supposed to exist in this build. if (!interfaceMap[prop]) { continue;
}
if (typeof navigator[prop] == "undefined") { throw"Navigator has no '" + prop + "' property!";
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.