Почему информационные карты не работают в IE8? - PullRequest
1 голос
/ 25 марта 2009

Что изменилось в 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 Ответ

1 голос
/ 26 марта 2009

Я получил ответ от группы IE8:

Изменение

embed.setAttribute("type", "application/x-informationcard");

до

embed.type = "application/x-informationcard";
...