2010-02-04 25 views
5

Yerleşik bir youtube chromeless oynatıcısını javascript ile kontrol ediyorum ve bazen ekran ayarlayarak gizlemek istiyorum: none. Ancak, oyuncuyu tekrar gösterdiğimde, youtube yöntemlerini kaybeder. ÖrneğinGizli youtube oyuncusu, yöntemlerini kaybediyor

: showPlayer ardından hidePlayer çağrılması

<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> 

playVideo çağrı üzerine bu hatayı veriyor:

Uncaught TypeError: Object #<an HTMLObjectElement> has no method 'playVideo' 

bulabilirim tek çözüm görünürlük kullanmaktır: gizlenmiş, ama yani sayfa düzenimle uğraşmak. Dışarıda başka çözümler var mı?

cevap

0

Kullanıcılarımda benim için de oldu. Tamamen saklamak yerine sadece 1x1 px yapmayı deneyebilirsiniz.

Bu oldukça sinir bozucu bir sorun ve bunun neden olduğu konusunda hiçbir anlam ifade etmiyor.

0

Her iki ekran: yok ve görünürlük: gizli oynatıcıyı yeniden yükleyecektir, ancak video oynatıcısını bir taşma ile bir div içinde sarmalayarak gizleyebilirsiniz: gizli.

HTML:

<div id="ytwrapper"> 
    <div id="ytplayer"> 
    </div> 
</div> 

CSS:

#ytwrapper { overflow: hidden; } 

JS:

function hidePlayer() { 
    player.pauseVideo(); 
    player.style.marginLeft = "50000px"; 
} 

function showPlayer() { 
    player.style.marginLeft = "0px"; 
    player.playVideo(); 
} 
İlgili konular