Internet Explorer удаляет элемент <object>из DOM? - PullRequest
0 голосов
/ 11 июня 2009

На моей странице есть разметка с тегом:

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

Идея заключается в том, чтобы браузеры по умолчанию отображали содержимое <div>, но если присутствует специальная библиотека JS, она найдет все элементы и преобразует те, которые им нужны (на основе @codetype).

Это работает в Firefox и WebKit, но не работает в IE, потому что этот браузер, кажется, удаляет внешний элемент <object> и просто оставляет внутренний <div>. То есть, под Explorer, DOM, который я получаю из разметки выше, выглядит так:

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

Это документированное поведение? Есть ли способ заставить IE сохранить элемент <object> в DOM нетронутым? (В настоящее время я тестирую это с IE7.)

Примечание : Это не для встраивания Flash или аналогичных мультимедиа.

Ответы [ 3 ]

2 голосов
/ 11 июня 2009

Хмм ... Согласно сообщению на MSDN , Internet Explorer до версии 7 удалял из DOM любой <object>, содержимое которого не могло быть отображено.

Полагаю, это делает мою проблему ловушкой-22. Я могу добавить некоторые данные, которые заставили бы IE отображать <object> (например, заставить отображать 1-пиксельное изображение), что позволило бы включить элемент в DOM, но это скрыло бы «запасную» разметку.

0 голосов
/ 11 июня 2009

Если вы попытаетесь создать объект, и его невозможно создать, я не удивлюсь, если тег объекта не окажется частью DOM.

0 голосов
/ 11 июня 2009

Для встраивания объектов я бы порекомендовал использовать такую ​​библиотеку, как swfobject , потому что да, IE определенно делает что-то необычное с этим тегом.

...