使用FireFox插件中的Javascript控制Youtube视频播放器

时间:2011-02-08 13:39:59

标签: javascript youtube flash youtube-api

我写了一个FireFox插件,工具栏上有一个按钮。 在click事件中,我试图找到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'
}

此外,'allowscriptaccess'属性设置为'always'。 知道为什么它不起作用吗?我没有想法。

谢谢!

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您需要使用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", "*");