API Java YouTube не вызывает обратного вызова - PullRequest
2 голосов
/ 05 июня 2010

Я пытаюсь работать с javascript api youtube, и у меня возникают проблемы при инициализации / получении обратного вызова, когда он будет готов. Документацию по API можно найти здесь .

Я получаю видео от json, предоставленные YouTube, и встраиваю их так:

//insert flash object in video element
        $(video_elm_arr[i]).append('<object id="video_' + i + '" width="' + width + '" height="' + height + '">' + 
                                   '<param name="movie" value="' + video_url + '?showinfo=0&enablejsapi=1"></param>' +
                                   '<param name="allowFullScreen" value="true"></param>' +
                                   '<param name="allowscriptaccess" value="always"></param>' +
                                   '<embed src="' + video_url + '?showinfo=0&enablejsapi=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="' + width + '" height="' + height + '"></embed>' +
                                   '</object>');

Обратите внимание, что я добавляю 'enablejsapi = 1' к URL-адресу, который должен включить API JavaScript. Тем не менее, когда я слушаю обратный вызов, что API готов, то есть:

//set player functionality when javascript api is available
  function onYouTubePlayerReady(playerId) {
    alert('api is ready!');
  }

оно никогда не срабатывает. Все остальное на странице (включая видео на YouTube) загружается правильно, и даже другой параметр, который я передаю в URL видео (showinfo = 0), работает правильно. Что дает? Кто-нибудь видит мою ошибку? Вся помощь очень ценится ...

Ответы [ 2 ]

1 голос
/ 21 сентября 2010

Страница обслуживается с сервера (т.е. не с локального компьютера)? YouTube (или Flash в целом) не может взаимодействовать с JavaScript, если страница обслуживается локально.

0 голосов
/ 30 сентября 2010

Попробуйте добавить &playerapiid=THEPLAYERIDYOUWANTPASSEDIN к URL. Это отправляется обратному вызову как параметр playerId.

//insert flash object in video element
        $(video_elm_arr[i]).append('<object id="video_' + i + '" width="' + width + '" height="' + height + '">' + 
                                   '<param name="movie" value="' + video_url + '?showinfo=0&enablejsapi=1&playerapiid=' + i + '"></param>' +
                                   '<param name="allowFullScreen" value="true"></param>' +
                                   '<param name="allowscriptaccess" value="always"></param>' +
                                   '<embed src="' + video_url + '?showinfo=0&enablejsapi=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="' + width + '" height="' + height + '"></embed>' +
                                   '</object>');
...