2012-04-04 4 views
0

Я трепка головы против этого на некоторое время теперь, и нужно новые глаза:YouTube onStateChange событие не работает

Я пытаюсь использовать API YouTube JS для вызова функции, когда внедренные изменения состояния видео , Но по какой-то причине событие dosnt, похоже, срабатывает, и я не получаю никаких ошибок в консоли.

HTML:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="630" height="350" id="bannerVideo"> 
    <param name="movie" value="http://www.youtube.com/v/6Yfd1uGYgk8?enablejsapi=1&version=3&playerapiid=ytplayer" /> 
    <param name="allowfullscreen" value="true" /> 
    <param name="allowscriptaccess" value="always" /> 
    <!--[if !IE]>--> 
    <object type="application/x-shockwave-flash" data="http://www.youtube.com/v/6Yfd1uGYgk8?enablejsapi=1&version=3&playerapiid=ytplayer" width="630" height="350"> 
     <param name="allowfullscreen" value="true" /> 
     <param name="allowscriptaccess" value="always" /> 
     <!--<![endif]--> 
     <a href="http://www.adobe.com/go/getflashplayer"> 
      <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /> 
     </a> 
     <!--[if !IE]>--> 
    </object> 
    <!--<![endif]--> 
</object> 

Javascript:

function onYouTubePlayerReady(playerId) { 
    //alert(playerId); 
    ytplayer = document.getElementById("bannerVideo"); 
    //alert(2); 
    ytplayer.addEventListener("onStateChange", "onytplayerStateChange"); 
    //alert(3); 
    //ytplayer.addEventListener("click", function(){alert('click');}); 
} 

function onytplayerStateChange(newState) { 
    alert("Player's new state: " + newState); 
} 

Пример сайта: http://dev.stewartknapman.com/ytPlayer/

код, я использую это прямая копия & паста с апи сайта YouTube и я используя swf-объект для встраивания кода. Я использую статическое вложение, потому что я буду менять некоторые вещи с помощью php, но это не имеет значения ... правильно? Я переместил весь код в свой собственный файл только для тестирования и его размещал на моем сервере разработки, поэтому он не должен быть проблемой с песочницей. Я также попытался предупредить каждую строку, чтобы убедиться, что функция addEventListener не работает. (Я оставил предупреждения в своем примере кода, но прокомментировал их.)

После поиска предыдущих сообщений об этой ошибке я обнаружил, что все они были решены путем добавления идентификатора к правому элементу или разбора функции обратного вызова как строка. Поэтому я дважды и тройную проверку этих вещей, но это, похоже, не проблема.

Любая помощь была бы принята с благодарностью.

ответ

1

Вы пытались инициализировать встроенную флеш-память, используя метод SWFObject (как описано в API YouTube)?

var params = { allowScriptAccess: "always" }; 
var atts = { id: "myytplayer" }; 
swfobject.embedSWF("http://www.youtube.com/v/VIDEO_ID?enablejsapi=1&playerapiid=ytplayer&version=3", 
        "ytapiplayer", "425", "356", "8", null, null, params, atts); 

Замените теги на вышеуказанное и настройте его на свою установку.

+0

Изменение метода встраивания. Спасибо за это. Примечание для молодых игроков: используйте этот способ внедрения, а не статический метод публикации. –

Смежные вопросы