2011-02-08 145 views
3

控制YouTube视频播放器,我写它具有工具栏上的按钮,一个Firefox插件。 在点击事件,我想找到embed元素,并尝试调用pauseVideo()就可以了,但它不工作。使用Javascript从Firefox插件

我相信我得到的对象是嵌入所以这一点毫无疑问,因为我显示“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”。 任何想法为什么它不工作?我没有想法。

谢谢!

回答

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", "*");