我正在使用play()函数播放嵌入的YouTube视频。这都是使用youtube api。以下是我的代码。它在chrome和IE中完美运行,但在Firefox中它不起作用。
alert(typeof ytplayer);
这段代码显示的是什么类型的“东西”ytplayer。在chrome和IE中它会出现对象(视频嵌入了对象方法)。在firefox中,它表示未定义,因此出现了问题。
我在这里有一个测试网站:http://lostinawesome.blogspot.com.au/2012/04/test-post.html
单击播放按钮或图像以播放youtube音频。在Firefox中,它可能不适合你。
有任何想法让这个在FF中发挥作用吗?
的javascript:
function onYouTubePlayerReady(playerId) {
var player = document.getElementById("ytplayer");
player.addEventListener("onStateChange", "onytplayerStateChange");
}
function onytplayerStateChange(newState) {
alert("New state " + newState);
}
function play() {
alert(typeof ytplayer);
if (ytplayer) {
ytplayer.playVideo();
}
}
HTML:
<object data="http://www.youtube.com/v/u8C-ZTQJIkU?enablejsapi=1&playerapiid=ytplayer&version=3" height="400" id="ytplayer" type="application/x-shockwave-flash" width="550"><param name="allowScriptAccess" value="always">
<param name="movie" value="http://www.youtube.com/v/u8C-ZTQJIkU?enablejsapi=1&playerapiid=ytplayer&version=3" >
</param>
<param name="allowScriptAccess" value="always">
</param>
</object>
<a href="javascript:void(0);" onclick="play();">Play</a>
我只需要更改为var ytplayer = document.getElementById(“ytplayer”); 因为ytplayer在任何地方都没有被声明为变量,但出于某种原因它无论如何都在chrome和IE中工作。
function play() {
var ytplayer = document.getElementById("ytplayer");
alert(typeof ytplayer);
if (ytplayer) {
ytplayer.playVideo();
}
}
答案 0 :(得分:1)
您需要明确选择元素,而不仅仅是使用其ID,因为它无法在所有浏览器中使用,如您所见。
更改为
var ytplayer = document.getElementById('ytplayer');
ytplayer.playVideo();