2009-06-11 5 views
0

ich Markup in meiner Seite haben, die das Tag enthält:Löscht Internet Explorer das Element <object> aus DOM?

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

Die Idee ist für Browser den Inhalt der <div> standardmäßig angezeigt werden, aber wenn eine spezielle JS-Bibliothek vorhanden ist, wird es alle Elemente finden und transformiere diejenigen, die es interessiert (basierend auf @codetype).

Dies funktioniert in Firefox und WebKit, aber im IE schlägt fehl, weil dieser Browser das äußere <object> Element abzustreifen scheint, und nur die innere <div> verlässt. Das heißt, unter Explorer, das DOM ich aus der obigen Markup erhalten wie folgt aussieht:

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

Ist das ein dokumentiertes Verhalten? Gibt es eine Möglichkeit, IE das <object>-Element im DOM unberührt zu lassen? (Ich teste das derzeit mit IE7.)

Hinweis: Dies ist nicht zum Einbetten von Flash oder ähnliche Multimedia.

Antwort

2

Hmm ... Laut einem Beitrag auf MSDN, Internet Explorer vor Version 7 würde aus DOM alle <object> entfernen, deren Inhalt nicht gerendert werden konnte.

Ich denke, das macht mein Problem zu einem Catch-22. Ich kann einige Daten hinzufügen, die IE den <object> render machen würden (wie es ein 1-Pixel-Bild anzeigen lassen), das das Element im DOM aktivieren würde, aber das würde die "Fallback" -Markierung ausblenden.

0

Um Objekte einzubetten, würde ich empfehlen, eine Bibliothek wie swfobject zu verwenden, denn ja, IE macht definitiv etwas funky mit diesem Tag.

+0

danke, aber ich versuche nicht, Flash-Inhalt – levik

+0

einzubetten, welche Art von Objekt versuchen Sie dann einzubetten? – marcgg

0

Wenn Sie versuchen, ein Objekt zu erstellen, und es nicht instanziiert werden kann, würde es mich nicht überraschen, wenn das Objekt-Tag nicht Teil des DOM sein würde.

Verwandte Themen