Управляйте видеоплеером Youtube, используя Javascript из аддона FireFox - PullRequest
3 голосов
/ 08 февраля 2011

Я написал аддон FireFox, у которого есть кнопка на панели инструментов.При событии щелчка я пытаюсь найти элемент EMBED и вызвать для него функцию pauseVideo (), но он не работает.

Я уверен, что объект, который я получаю, является EMBED, так что никаких сомнений в этом нет.потому что я отображаю 'src'

var p1 = content.document.getElementById("movie_player");
window.alert(p1.src);

Проблема в том, что pauseVideo () не работает:

try
{
p1.pauseVideo();
}
catch(e)
{
  window.alert(e); // this gives 'pauseVideo() is not a function'
}

Кроме того, атрибуту "allowcriptaccess" установлено значение "всегда",Есть идеи, почему это не работает?У меня нет идей.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 20 декабря 2012

Вам нужно использовать postMessage для связи с плеером Youtube, что-то вроде этого:

    var doc = content.document;
    var scpt = doc.getElementById("uniq_script_id");
    if (!scpt) {
        scpt = doc.createElement("script");
        scpt.type = "text/javascript";
        scpt.id = "uniq_script_id";
        var code = [
            'window.addEventListener("message", function(e) {',
            '  var cmd = e.data;',
            '  var player = document.getElementById("movie_player");',
            '  player[cmd]();',
            '}, false);'
        ].join('\n');
        scpt.textContent = code;
        doc.body.appendChild(scpt);
    }

    window.postMessage("pauseVideo", "*");
0 голосов
/ 03 октября 2012

Убедитесь, что enablejsapi установлено. https://developers.google.com/youtube/player_parameters#enablejsapi

...