2017-02-06 8 views
1

YouTubeのAPIプレーヤーのコードは以下のとおりです。私は関数、すなわちplayVideo、stopVideoなどを定義しましたが、未定義の関数のエラーが発生します。未知のタイプエラー:未定義のプロパティ 'stopVideo'を読み取ることができません

多くの研究の末、私はまだこのエラーを理解することができません。

index.htmlを

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="UTF-8"> 
<title>Videos</title> 
<script src="jquery-3.1.1.js"></script> 
<script src="script.js"></script> 


</head> 
<body> 
<div id="player"> 
    <iframe id="player" width="560" height="315" src="https://www.youtube.com/embed/sGPrx9bjgC8" frameborder="0" allowfullscreen></iframe> 
    <br/> 
    <a href="javascript:void(0);" onclick = "playVid()">Play</a>|| 
    <a href="javascript:void(0);" onclick = "stopVid()">Stop</a>|| 
    <a href="javascript:void(0);" onclick = "muteVid()">Mute</a>|| 

    </div> 
</body> 
</html> 

**script.js** 

var tag = document.createElement('script'); 
tag.src = "https://www.youtube.com/iframe_api"; 
tag.scr = "https://s.ytimg.com/yts/jsbin/www-widgetapi-vflioRwVn/www-widgetapi.js"; 
var firstScriptTag = document.getElementsByTagName('script')[0]; 
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 

var player; 

window.onYouTubeIframeReady = function(){ 
    player = new YT.Player('player', { 
     videoId: 'sGPrx9bjgC8', 
     events: { 
      'onReady' : onPlayerReady, 
     } 
    }); 
} 

function onPlayerReady(event){ 
    event.target.playVideo(); 
} 

function playVid(){ 
    player.playVideo(); 
} 

function stopVid(){ 
    player.stopVideo(); 
} 

function muteVid(){ 
    player.mute(); 
} 

Here is my erorrs

+0

あなたは、関数onYouTubeIframeAPIReadyを試みることができる(){window.onYouTubeIframeReady =機能(){ – Deep

+0

の代わりに、私はそれも試してみました。しかし、まだ動作していない – honey

答えて

2

このone.Itを試してみては私のために働きました。

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="UTF-8"> 
<title>Videos</title> 
<script 
    src="https://code.jquery.com/jquery-3.1.1.min.js" 
    integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" 
    crossorigin="anonymous"></script> 
<script type="text/javascript" src="https://www.youtube.com/iframe_api"></script> 

<script type="text/javascript"> 
var tag = document.createElement('script'); 
tag.src = "https://s.ytimg.com/yts/jsbin/www-widgetapi-vflioRwVn/www-widgetapi.js"; 
tag.setAttribute('onload','onYouTubeIframeReady()'); 
var firstScriptTag = document.getElementsByTagName('script')[0]; 
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 

var player; 

window.onYouTubeIframeReady = function(){ 
    player = new YT.Player('player', { 
     videoId: 'sGPrx9bjgC8', 
     events: { 
      'onReady' : onPlayerReady, 
     } 
    }); 
} 

function onPlayerReady(event){ 
    event.target.playVideo(); 
} 

function playVid(){ 
    player.playVideo(); 
} 

function stopVid(){ 
    player.stopVideo(); 
} 

function muteVid(){ 
    player.mute(); 
} 
</script> 

</head> 
<body> 
    <div id="player"> 
    <iframe id="player" width="560" height="315" src="https://www.youtube.com/embed/sGPrx9bjgC8" frameborder="0" allowfullscreen></iframe> 
    <br/> 
    </div> 
    <div> 
    <a href="javascript:void(0);" onclick = "playVid()">Play</a>|| 
    <a href="javascript:void(0);" onclick = "stopVid()">Stop</a>|| 
    <a href="javascript:void(0);" onclick = "muteVid()">Mute</a>|| 
    </div> 
</body> 
</html> 
+0

さて、答えを正しいとマークしてください。事前に感謝します。 – SatyaDash

0

あなたが期待しているようどうやら、あなたのplayer変数はYTオブジェクトに設定されていません。

  1. onYouTubeIframeReadyコールバックが発生する前に、PlayVid()関数を呼び出すことがあります。
  2. コードのもう1つの問題は、ページ上の複数の要素に同じid="player"という名前を使用していることです。 divのIDを別の名前に変更してください。たとえば、

<div id="player-wrapper"> 
    <iframe id="player" width="560" height="315" src="..." 
+0

私はすべての方法を試してみました。しかし、私はまだこのエラーを理解することはできません。 – honey

+0

コードでフィドルを作成できますか? – Uzbekjon

関連する問題