Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript YouTubeplyer OnStateChange未触发_Javascript_Youtube Api_Youtube Javascript Api - Fatal编程技术网

javascript YouTubeplyer OnStateChange未触发

javascript YouTubeplyer OnStateChange未触发,javascript,youtube-api,youtube-javascript-api,Javascript,Youtube Api,Youtube Javascript Api,我对youtube播放器不开火有意见。我看过其他帖子,它们不太适合我的情况,因为我可能正在使用不同的(无铬javascript)版本 HTML: 我基本上复制了文档中的示例。那我就这么做 var player = document.getElementById('player'); 我可以让它正常工作。但唯一的问题是,当它更改状态时,OnStateChange事件不会触发。代码是这样的 document.getElementById('player').addEventListener('On

我对youtube播放器不开火有意见。我看过其他帖子,它们不太适合我的情况,因为我可能正在使用不同的(无铬javascript)版本

HTML:

我基本上复制了文档中的示例。那我就这么做

var player = document.getElementById('player');
我可以让它正常工作。但唯一的问题是,当它更改状态时,OnStateChange事件不会触发。代码是这样的

document.getElementById('player').addEventListener('OnStateChange', 
  function(new_state){
     console.log(new_state);
  }
)

新的州从未打印出来。我做错了吗

这个例子对我很有用

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>

<body>

  <div id="ytapiplayer">
    You need Flash player 8+ and JavaScript enabled to view this video.
  </div>

<script type="text/javascript">

    var params = { allowScriptAccess: "always" };
    var atts = { id: "myytplayer" };
    swfobject.embedSWF("http://www.youtube.com/v/Bl4Qne-RpcM?enablejsapi=1&playerapiid=myytplayer&version=3",
                       "ytapiplayer", "425", "356", "8", null, null, params, atts);

function onYouTubePlayerReady(playerId) {
  ytplayer = document.getElementById("myytplayer");
  ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
}

function onytplayerStateChange(newState) {
   alert("Player's new state: " + newState);
}
  </script>
</body>

您需要启用Flash player 8+和JavaScript才能查看此视频。
var params={allowScriptAccess:“始终”};
var atts={id:“myytplayer”};
swfobject.embeddeswf(“http://www.youtube.com/v/Bl4Qne-RpcM?enablejsapi=1&playerapiid=myytplayer&version=3",
“ytapiplayer”、“425”、“356”、“8”、空、空、参数、atts);
函数onYouTubePlayerReady(playerId){
ytplayer=document.getElementById(“myytplayer”);
ytplayer.addEventListener(“onStateChange”、“onytplayerStateChange”);
}
函数onytplayerStateChange(newState){
警报(“玩家的新状态:+newState”);
}

没有getElementById('player')中使用的名为player(id=“ytapiplayer”)的元素,我认为javascript在“ytapiplayer”下嵌入了一个对象(id=“player”,具体在atts中)。我可以调用该对象上的所有方法(id=“player”),但OnStateChange从未被触发。你可能是对的。添加一些可以运行的代码?我在JSFIDLE上放了一些代码。但是视频没有加载。我认为JSFIDLE可能会禁止它。我将在回答中给出一个工作示例。哦,这就是该函数的用法。令人惊叹的。
document.getElementById('player').addEventListener('OnStateChange', 
  function(new_state){
     console.log(new_state);
  }
)
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>

<body>

  <div id="ytapiplayer">
    You need Flash player 8+ and JavaScript enabled to view this video.
  </div>

<script type="text/javascript">

    var params = { allowScriptAccess: "always" };
    var atts = { id: "myytplayer" };
    swfobject.embedSWF("http://www.youtube.com/v/Bl4Qne-RpcM?enablejsapi=1&playerapiid=myytplayer&version=3",
                       "ytapiplayer", "425", "356", "8", null, null, params, atts);

function onYouTubePlayerReady(playerId) {
  ytplayer = document.getElementById("myytplayer");
  ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
}

function onytplayerStateChange(newState) {
   alert("Player's new state: " + newState);
}
  </script>
</body>