2011-02-08 106 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", "*");