好了,所以我挖成码多一点,并将其最小化到确切的问题。这是iFrame设置url调用的问题。杰夫,我修改上的jsfiddle(http://jsfiddle.net/jeffposnick/yhWsG/3/)的例子如下:
HTML代码:
<div id="DIVTAG">
<iframe class="gwt-Frame" id="player" width="640" height="360" src="https://www.youtube.com/embed/M7lc1UVf-VE?wmode=transparent&enablejsapi=1&modestbranding=1&rel=0&showinfo=0&fs=0;autoplay=1"></iframe>
</div>
<button onclick="hide()">Hide Player</button>
<button onclick="show()">Show Player</button>
JavaScript代码:
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
events: {
'onReady': onReady,
'onStateChange': onPlayerStateChange
}
});
}
function onReady() {
alert("player ready");
}
// The API will call this function when the video player state changes.
function onPlayerStateChange(event) {
alert("player state changed");
}
function hide() {
player.stopVideo();
document.getElementById("player").style.display="none";
}
function show() {
document.getElementById("player").style.display="block";
document.getElementById("player").src="https://www.youtube.com/embed/M7lc1UVf-VE?wmode=transparent&enablejsapi=1&modestbranding=1&rel=0&showinfo=0&fs=0;autoplay=1";
}
您可以选择忽略的“hide播放器“按钮,只要点击”播放器“,视频加载后,你会看到一旦播放器第二次加载,stateChange事件将不会触发。
我只是设置onReady事件触发两次,但onStateChange不是的iframe的来源。希望这有助于提出修复建议。
目前尚不清楚“关闭观察者”的含义。你在设置“display:none”吗?我们可以尝试一个实际的例子来证明你的问题。 –
这是一个基本上嵌入指定视频的自定义查看器。只需一个DIV标签中的iFrame。本质上,DIV设置为“display:none”。我的代码全部集成在Web应用程序中,整个功能很难提取。 – user2694731
Internet Explorer和Firefox上的[youtube iFrame API]可能的重复(http://stackoverflow.com/questions/14147677/youtube-iframe-api-on-internet-explorer-and-firefox) –