2009-03-25 8 views
1

Qu'est-ce qui a changé dans IE8 qui empêche la détection de la prise en charge InfoCard Selector en JavaScript à moins que IE8 ne soit mis en mode de compatibilité?Pourquoi les InfoCards ne fonctionnent-ils pas dans IE8?

Et plus précisément, quel est le nouveau code JavaScript pour détecter la présence du support InfoCard?

Voici le script qui a travaillé à travers IE7, y compris FireFox avec un plug-in dans certains cas:

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; 
} 

Répondre

1

Je suis une réponse hors bande de l'équipe IE8:

changement

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

à

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