JWPlayerでYouTubeエラーを処理したいので、ビデオが存在しないか、国で利用できない場合に備えて、プレーヤーまたはjavascriptでメッセージを表示します。このようなことをしています...
var options = {
height: 330,
},
flashplayer: '/player.swf',
width: 560,
events:{
onError:function(obj){
alert('ERROR'+obj);
}
} ,
debug: 'console'
};
jwplayer("player").setup(options);
jwplayer("player").play();
しかし、ビデオが存在しなくても、onErrorイベントから内部に入ることができません...そして、コンソールで見ることができます..ログ(プレビュー画像の読み込みエラー:エラー#2036)
YouTubeの制限国の場合、コンソールでもそれを見ることができません。
いずれにせよ、ビデオは読み込みアニメーションを表示するだけで、いつでも読み込むことができるとユーザーに信じ込ませますが、これは真実ではありません。
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets">
<script type="text/javascript" src="#{facesContext.externalContext.requestContextPath}/assets/jwplayer.min.js"></script>
<script type="text/javascript" src="#{facesContext.externalContext.requestContextPath}/assets/swfobject.js"></script>
<div id="player"></div>
</body>
<script type="text/javascript">
//<![CDATA[
window.onload=createPlayer();
function createPlayer() {
var flashvars = {
file:"http://www.youtube.com/watch?v=pnEHsUWFuNM",
autostart:"true"
}
var params = {
allowfullscreen:"true",
allowscriptaccess:"always"
}
var attributes = {
id:"player1",
name:"player1"
}
swfobject.embedSWF("#{facesContext.externalContext.requestContextPath}/assets/player.swf", "player", "320", "196", "9.0.115", false, flashvars, params, attributes);
}
function loadPlayer() {
var options = {
height: 325,
flashplayer: '#{facesContext.externalContext.requestContextPath}/assets/player.swf',
width: 560,
events:{
onError:function(error){
alert('Error loading your link, please try another one');
}
} /* ,
debug: 'console'*/
};
options.file = 'http://www.youtube.com/watch?v=pnEHsUWFuNM';
options.events.onReady= function(){
jwplayer("player").play();
};
jwplayer("player").setup(options);
}
//]]>
</script>
loadPlayer で jwplayer.js を試して、createPlayer を SWFObject から直接...そのビデオはドイツで表示されるべきではないというだけで存在しますが、まだロードしようとしています。他の存在しない URL を設定すると、「http://www.youtube.com/watch?v=ABC」と言って、存在しないビデオをロードしようとし続けます。