IE9 «функция»: превращает старые теги объекта / встраивать пару тегов в один объект, но это не удалось - PullRequest
1 голос
/ 05 июля 2011

Я работаю над проектом, который позволяет конечным пользователям встраивать flash в свои собственные HTML-страницы, в то время как мы предлагаем различные способы, чтобы пользователь мог выбрать тот, который подходит для их обстоятельств, например, большинство блогов не приветствуют пользователей внедрить JavaScript на их страницах, поэтому SWFObject был бы невозможен, мы предложили два других пути: IFrame и старая, но хорошая пара Object / Embed. Так же, как старый код встраивания Youtube:

<object width="560" height="349">
    <param name="movie" value="http://www.youtube.com/v/rgyL08nhtkw?version=3&amp;hl=zh_TW"></param>
    <param name="allowFullScreen" value="true"></param>
    <param name="allowscriptaccess" value="always"></param>
        <embed src="http://www.youtube.com/v/rgyL08nhtkw?version=3&amp;hl=zh_TW" type="application/x-shockwave-flash" width="560" height="349" allowscriptaccess="always" allowfullscreen="true"></embed>
</object>

Каким-то образом новый IE9 превращает теги выше в это:

<object width="560" height="349" althtml="<embed src="http://www.youtube.com/v/rgyL08nhtkw?version=3&amp;hl=zh_TW" type="application/x-shockwave-flash" width="560" height="349" allowscriptaccess="always" allowfullscreen="true"></embed>">
    <param name="movie" value="http://www.youtube.com/v/rgyL08nhtkw?version=3&amp;hl=zh_TW"></param>
    <param name="allowFullScreen" value="true"></param>
    <param name="allowscriptaccess" value="always"></param>
</object>

Как вы можете видеть, IE9 помещает встраиваемую часть в атрибут с именем "althtml" в теге объекта, а кавычки разрушают синтаксис, все flashvars и params после "althtml" больше не работают.

Мне интересно, есть ли способ помешать IE9 сделать это? Безопасно ли использовать только объект и оставлять его в покое?

Ответы [ 2 ]

1 голос
/ 05 июля 2011

Я думаю, вы не понимаете, что на самом деле здесь происходит.«Запасной» HTML-код, который находится внутри тега объекта (в частности, тега EMBED), не отображается, если тег OBJECT не удается отобразить.Если тег OBJECT не удается отобразить, то тег EMBED будет отображаться.

(Конечно, поскольку эти два действия делают одно и то же, вы получите один и тот же результат; будет воспроизводиться OBJECT или обаOBJECT и EMBED не смогут играть).

0 голосов
/ 15 августа 2012

Ну, я не знаю причину, по которой altHTML обнаруживается в объекте. Но я нашел работу вокруг. Надеюсь, это поможет вам.

Ниже ссылка на мой вопрос .. на который я сам ответил: P

IE не получает src Flash Object из ответа Ajax

...