Was hat sich in IE8 geändert, wodurch die Erkennung von InfoCard Selector in JavaScript nicht mehr funktioniert, wenn IE8 nicht in den Kompatibilitätsmodus versetzt wird?Warum funktionieren InfoCards nicht im IE8?
Und mehr auf den Punkt, was ist der neue JavaScript-Code, um das Vorhandensein von InfoCard-Unterstützung zu erkennen?
Hier ist das Skript, das durch IE7, einschließlich FireFox mit einer Plug-in in einigen Fällen aufgearbeitet:
function AreCardsSupported() {
var IEVer = -1;
if (navigator.appName == 'Microsoft Internet Explorer') {
if (new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})").exec(navigator.userAgent) != null) {
IEVer = parseFloat(RegExp.$1);
}
}
// Look for IE 7+.
if (IEVer >= 7) {
var embed = document.createElement("object");
embed.setAttribute("type", "application/x-informationcard");
return "" + embed.issuerPolicy != "undefined" && embed.isInstalled;
}
// not IE (any version)
if (IEVer < 0 && navigator.mimeTypes && navigator.mimeTypes.length) {
// check to see if there is a mimeType handler.
x = navigator.mimeTypes['application/x-informationcard'];
if (x && x.enabledPlugin) {
return true;
}
// check for the IdentitySelector event handler is there.
if (document.addEventListener) {
var event = document.createEvent("Events");
event.initEvent("IdentitySelectorAvailable", true, true);
top.dispatchEvent(event);
if (top.IdentitySelectorAvailable == true) {
return true;
}
}
}
return false;
}