我写了一个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'。 知道为什么它不起作用吗?我没有想法。
谢谢!
答案 0 :(得分:0)
确保已设置enablejsapi
。
https://developers.google.com/youtube/player_parameters#enablejsapi
答案 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", "*");