我正在使用 javascript 控制嵌入式 youtube chromeless 播放器,并且我想偶尔通过设置 display: none 来隐藏它。然而,当我再次向播放器展示时,它失去了 YouTube 方法。
例如:
<script>
swfobject.embedSWF("http://www.youtube.com/apiplayer?enablejsapi=1&playerapiid=player",
"player", "425", "356", "8", null, null,
{allowScriptAccess: "always"}, {id: 'player'}
);
var player = null;
function onYouTubePlayerReady(playerId) {
player = document.getElementById(playerId);
player.addEventListener('onStateChange', 'playerStateChanged');
}
function hidePlayer() {
player.pauseVideo();
player.style.display = 'none';
}
function showPlayer() {
player.style.display = 'block';
player.playVideo();
}
</script>
<a href="#" onClick="hidePlayer();">hide</a>
<a href="#" onClick="showPlayer();">show</a>
<div id="player"></div>
调用 hidePlayer 然后调用 showPlayer 会在 playVideo 调用中出现此错误:
Uncaught TypeError: Object #<an HTMLObjectElement> has no method 'playVideo'
我能找到的唯一解决方案是使用visibility:hidden,但这会扰乱我的页面布局。还有其他解决方案吗?
我的用户脚本中也发生过这种情况。您可以尝试将其设置为 1x1 像素,而不是完全隐藏它。
这是一个非常烦人的问题,并且不明白为什么会发生这种情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)