2009-06-11 9 views
0

Je balisage dans ma page qui inclut le tag:Internet Explorer supprime-t-il l'élément <object> de DOM?

<body> 
    <object codebase="blah" codetype="text/blah"> 
    <param name="name" value="value"/> 
    <div>Some Markup</div> 
    </object> 
</body> 

L'idée est pour les navigateurs pour afficher le contenu du <div> par défaut, mais si une bibliothèque spéciale JS est présent, il trouvera tous les éléments et transformer ceux dont il se soucie (basé sur @codetype).

Cela fonctionne dans Firefox et WebKit, mais échoue dans IE, parce que ce navigateur semble dépouiller l'élément <object> extérieur, et laisse simplement l'intérieur <div>. C'est, sous Explorer, les DOM que je reçois de la balise ci-dessus ressemble à ceci:

<body> 
    <div>Some Markup</div> 
</body> 

Est-ce un comportement documenté? Existe-t-il un moyen de rendre IE préserver l'élément <object> dans le DOM intacte? (Je suis actuellement en train de tester ceci avec IE7.)

Note: Ceci n'est pas pour l'intégration de Flash ou d'un contenu multimédia similaire.

Répondre

2

Hmm ... Selon une publication sur MSDN, Internet Explorer avant la version 7 supprimerait de DOM tous les <object> dont le contenu n'a pas pu être rendu. Je suppose que cela rend mon problème un piège-22. Je peux ajouter quelques données qui rendraient IE rendre le <object> (comme lui faire montrer une image de 1 pixel), ce qui permettrait l'élément dans le DOM, mais cela masquerait le balisage "fallback".

0

Pour intégrer des objets, je recommande d'utiliser une bibliothèque comme swfobject, car oui, IE fait définitivement quelque chose de funky avec cette balise.

+0

merci, mais je n'essaie pas d'intégrer le contenu Flash – levik

+0

quel genre d'objet voulez-vous intégrer alors? – marcgg

0

Si vous essayez de créer un objet, et qu'il ne peut pas être instancié, cela ne me surprendrait pas si la balise object ne faisait pas partie du DOM.