Вставить видео YouTube с jQuery в IE6 без SWFObject - PullRequest
6 голосов
/ 22 февраля 2010

Вот мой код:

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<title></title>
<script>
$(document).ready(function(){
$("#video").html('<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/HPPj6viIBmU&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/HPPj6viIBmU&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object>');
});
</script>
</head>
<body>
  <div id="video"></div>
</body>
</html>

Он работает с Firefox и Chrome, но что-то не так в IE6. К сожалению, одним из требований проекта является поддержка этого браузера, поэтому, даже если он работает в IE7, мне нужно решить это.

Я знаю, что есть SWFObject, но я бы предпочел не использовать его (мы уже загружаем кучу файлов JS, нам больше не нужно).

Даже это не сработает:

  <script>
document.write('<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/HPPj6viIBmU&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/HPPj6viIBmU&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object>');
  </script>

Похоже, что IE6 игнорирует тег <object>, вот код, который он встраивает.

<EMBED src=http://www.youtube.com/v/HPPj6viIBmU&amp;hl=en_US&amp;fs=1&amp; width=480 height=385 type=application/x-shockwave-flash allowfullscreen="true" allowscriptaccess="always"></EMBED>

Есть ли обходной путь?

Спасибо.

Ответы [ 4 ]

10 голосов
/ 25 февраля 2010

Обходной путь, который вы ищете, закончится написанием эквивалента объекта swfobject, за исключением того, что он не будет так же хорошо протестирован или выполнен. Зачем изобретать велосипед, когда существует совершенно хорошее существующее решение, особенно когда оно минимизировано только на 10 КБ? если вы не можете добавить еще один http-запрос, почему бы не вставить код swfobject на страницу или в другой js-файл.

Я никогда не использую ничего, кроме swfobject для встраивания flash.

1 голос
/ 02 марта 2010

Это немного странно, потому что изначально тег объекта был введен MS для встраивания flash-объектов.

Попробуйте добавить параметр classid к вашему тегу объекта, например:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="300" height="120">
    <param name="movie" value="myContent.swf" />    
</object>
0 голосов
/ 03 марта 2010

Для встраивания или тегов объекта иногда нужно использовать методы DOM createElement и insertBefore или appendChild вместо простого написания HTML-кода с использованием document.write. Когда вы используете методы DOM, он уведомляет браузер о том, что новый элемент добавляется динамически, и браузер должен обработать его, чтобы превратить его в объект плагина. Посмотрите этот букмарклет , который я сделал, чтобы изменить размер объекта Silverlight и вставить его в существующий документ HTML.

0 голосов
/ 22 февраля 2010

Помимо использования SWFObject вам придется вручную определять IE, а затем использовать

<embed>

Примерно так:

var isMSIE = /*@cc_on!@*/false;
if(isMSIE)
{
 //use embed tag
}
else
{
 //use object
}

См .: http://kb2.adobe.com/cps/127/tn_12701.html для встраивания и свойств объекта.

Я думаю, что проблема с вашим тегом встраивания заключается в том, что вы не можете разместить внутри него Flash-переменные. Они должны пойти во flashvars. Ссылка выше разъяснит, как это сделать. Но лучший способ проверить это - дать ему минимальные свойства, а затем добавить еще, чтобы увидеть, что его нарушает.

Простой тег для встраивания IE6 выглядит следующим образом:

<embed src="MyFlashMovie.swf" quality="high" width="320" height="240" name ="MyMovieName" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer">
</embed>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...