L’élément objet de secours s’applique au modèle DOM

Quand un élément object possède du contenu de secours (généralement, un élément embed), Windows Internet Explorer 9 analyse ce contenu et l’inclut dans le modèle DOM (Document Object Model), contrairement aux versions antérieures de Windows Internet Explorer. Grâce à ce changement de comportement, l’interopérabilité de la gestion des éléments de ce type par Internet Explorer 9 et sa conformité aux normes s’en trouvent renforcées.

Par conséquent, si un élément object possède le même attribut de nom qu’un de ses éléments de secours, window["myName"] retourne une collection de tous les éléments portant le nom "myName". Les pages prenant en charge Internet Explorer qui retournent un élément unique (généralement, l’élément object) au lieu d’une collection peuvent déclencher une exception lors de l’accès aux méthodes et aux propriétés de la valeur retournée.

Si, pour un élément object, vous utilisez le même attribut de nom que pour le contenu de secours et que vous essayez de récupérer une référence au plug-in instancié à l’aide de window["myPlugin"], plusieurs éléments sont retournés, alors que seul l’élément object était retourné dans les versions antérieures d’Internet Explorer.

Considérons, par exemple, le script et le balisage suivants :

Balisage


<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" name="myPlugin" 
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
  <param name="movie" value="myflash.swf" />
  <embed src="myflash.swf" name="myPlugin" type="application/x-shockwave-flash"
    pluginspage="http://www.adobe.com/go/getflashplayer"></embed>
</object>

JavaScript


plugin = window["myPlugin"]; //the OBJECT element in IE8, a collection of the OBJECT and 
EMBED elements in IE9
plugin.style.display = "none";  //Causes an exception in IE9: "SCRIPT5007: Unable to set 
value of the property ‘display’: object is null or undefined"

Dans Windows Internet Explorer 8, window["myPlugin"] retourne uniquement l’élément object (car Internet Explorer 8 n’inclut pas le contenu de secours dans le DOM).

Dans Internet Explorer 9, comme l’élément embed est inclus dans le DOM, window["myPlugin"] retourne une collection d’éléments object et embed. Ce comportement est interopérable avec les autres navigateurs et est conforme aux normes.

Si le plug-in instancié est attendu, utilisez document["myPlugin"] au lieu de window["myPlugin"]. document["myPlugin"] ne retourne pas d’éléments de secours quand le parent est instancié.


plugin = document["myPlugin"]; //the instantiated plugin: OBJECT element in IE, 
EMBED element in browsers which use the Netscape plugin model

Détails supplémentaires :

Dans les versions préliminaires d’Internet Explorer 9, document["myPlugin"] retourne l’élément embed, tandis que window["myPlugin"] retourne une collection HTML d’éléments object et embed dans l’exemple ci-dessus.

Toutefois, le modèle de codage courant suivant a été observé sur de nombreux sites :


if(document["myPlugin"]) {
     plugin = document["myPlugin"]; //expected to be the object element in Internet Explorer and embed element in other browsers
}

Pour faciliter la compatibilité des sites, Internet Explorer 9 présente un comportement amélioré pour document["myName"]. Si le plug-in se charge correctement, il retourne le plug-in instancié (dans l’exemple ci-dessus, l’élément object). Cela correspond effectivement à ce que retourne Internet Explorer 8 tout en permettant une analyse de conformité aux normes du contenu de secours. Ce comportement assure l’interopérabilité du modèle de codage ci-dessus dans tous les principaux navigateurs.

window["myName"] demeure inchangé par rapport aux versions préliminaires d’Internet Explorer 9 et ne doit être utilisé que si les éléments attendus ne sont pas limités aux éléments instanciés. Le tableau suivant décrit le fonctionnement de ces API dans Internet Explorer 9.

Éléments retournés par window["xyz"]Éléments retournés par document["xyz"]
  • Éléments embed ou object affichés et ayant pour attribut name ou id "xyz", or
  • Éléments embed ou object sans dispositif de secours dont aucun ancêtre d’objet ne s’affiche et ayant pour attribut name ou id "xyz", or
  • Éléments object qui s’affichent ou dont aucun ancêtre d’objet ne s’affiche, et ayant pour attribut name ou id "xyz", or
  • Éléments applet, form, iframe ou img ayant pour attribut name "xyz", or
  • Éléments applet ayant pour attribut id "xyz", or
  • Éléments img ayant pour attribut id "xyz" et dont un attribut de contenu name est présent

 

Un élément object est dépourvu de dispositif de secours s’il ne possède pas de descendants object ou embed.

Rubriques connexes

 

 

Afficher:
© 2014 Microsoft