2017-05-17 12 views
0

다음 코드로 내 사이트의 YouTube 클립에 iframe_api를 구현했습니다.youtube.com/iframe_api는 IE11 또는 Windows 10의 가장자리에서 실행되지 않습니다.

var tag = document.createElement('script'); 
tag.src = "https://www.youtube.com/iframe_api"; 
var firstScriptTag = document.getElementsByTagName('script')[0]; 
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 

// Setup Youtube player 
var player; 

// Get id of first clip 
var ytVideoId = jQuery('.start-yt').attr('data-video-id'); 

// When API is ready, create player with above id 
function onYouTubePlayerAPIReady() { 
    player = new YT.Player('player', { 
     height: '390', 
     width: '640', 
     videoId: ytVideoId, 
     events: { 
      'onReady': onPlayerReady 
     } 
    }); 
    console.log('API Ready'); 
} 

// When player is ready 
function onPlayerReady(event) { 
    jQuery('.start-yt').addClass('play-icon'); 

    // Set glob var 
    var ytGlobId =""; 

    // Close button 
    jQuery('.ytClose').click(function(){ 
     jQuery('.youtube-player-container').removeClass('active'); 
     player.pauseVideo(); 
    }); 

    jQuery('.youtube-player-container').click(function(){ 
     jQuery('.youtube-player-container').removeClass('active'); 
     player.pauseVideo(); 
    }); 

    // load or play clip 
    jQuery('.start-yt').click(function(){ 
     jQuery('.youtube-player-container').addClass('active'); 

     if (ytGlobId == jQuery(this).attr('data-video-id')) { 
      player.playVideo(); 
     } else { 
      ytGlobId = jQuery(this).attr('data-video-id'); 
      player.loadVideoById(ytGlobId); 
     } 
    }); 

    console.log('Player Ready'); 
} 

작동합니다. 그러나 친구에게는 Windows 10과 IE11 + Edge가 있습니다. 그리고 'onReady': onPlayerReady이 거기에서 발생하지 않는 것 같습니다. console.logAPI Ready이라고 기입하고 확인시 Player Ready을 기입하지 마십시오. 콘솔에 아무런 오류가 없으며 단지 작동하지 않고 작동합니다. Browserstack에서 동일한 조합 (Windows 10 + IE11/Edge)을 확인했는데 작동하는 것처럼 보입니다.

Google에서 답변을 검색했으며 일부 사용자에게 비슷한 문제가있는 것 같지만 해결 방법을 찾을 수있는 예제를 찾지 못했습니다.

답변

0

thread에 명시된 바와 같이 IFrame API에는 일시적인 문제가 있습니다. 이 link에서 읽을 수있는 iFrame Player API (2013 년 6 월에 수정 됨)에 일시적인 문제가있었습니다.

임시 수정 프로그램으로, 당신은 단지 onReady 이벤트에서 이벤트 리스너를 추가해야합니다 Youtube Iframe API not working in Internet Explorer (11)

+0

감사 @abielita을 :

function onReady() { player.addEventListener('onStateChange', function(e) { console.log('State is:', e.data); }); } 

가 여기에도 도움이 될 다른 스레드입니다. 그것을 시도했지만 작동하지 않았다. – JoakimB

+0

내가해야 할 일은 console.log 메시지만으로 그 eventlistner를 불러 모으는 것 뿐이야? 'DOMWindow'에 'postMessage'를 실행하지 못했습니다. 제공된 대상 출처 ('https://www.youtube.com')가받는 사람 창 ('https : //www.youtube.com')과 일치하지 않습니다. /dev3.axiell.com ').',하지만 플레이어가 작동 중입니다. Edge/IE11에서는 여전히 차이가 없지만 여전히 실패합니다. eventlistner에 내 기능을 추가하려고했지만 모든 브라우저에서 플레이어가 다운되었습니다. – JoakimB

+0

같은 일에 대해 많은 의견이 나누어 져서 미안합니다. 보시다시피 문제는 onReady() 함수가 전혀 호출되지 않는다는 것입니다. 그래서 eventlistner를 넣으면 아무런 변화가 없습니다. 왜냐하면'onReady()'는 Win10 + Edge/IE11에서 전혀 작동하지 않기 때문입니다. – JoakimB