Почему информационные карты не работают в IE8?
Что изменилось в IE8, из-за чего обнаружение поддержки InfoCard Selector в javascript перестало работать, если IE8 не переведен в режим совместимости?
И, что более важно, какой новый код JavaScript обнаруживает наличие поддержки InfoCard?
Вот скрипт, который работал через IE7, включая FireFox с плагином в некоторых случаях:
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;
}
1 ответ
Решение
Я получил ответ от группы IE8:
+ Изменить
embed.setAttribute("type", "application/x-informationcard");
в
embed.type = "application/x-informationcard";