Youtube javascript api, pjax, 如何重新加载onYouTubeIframeAPIReady();
Youtube javascript api, pjax, how to reload onYouTubeIframeAPIReady();
我的 YouTube javascript 播放器有问题 api。
我调用这个js代码:
function onYouTubeIframeAPIReady() {
var podcast = document.getElementById('podcast')
var player = new YT.Player( document.getElementById('podcast'));
player.addEventListener('onStateChange', function(e) {
if (e.data === 1) {
alert("play");
}
});
};
使用此 html 代码:
<iframe id="podcast" type="text/html" width="720" height="405"
src="https://www.youtube.com/embed/XXXXXX?cc_load_policy=1&enablejsapi=1&theme=light"
frameborder="0" allowfullscreen>
问题是我使用的是pjax系统,所以导航的时候全局javascript代码没有重新加载。
因此,我在 pjax:success 时重新加载了 javascript 代码的某些部分。我试过这样的事情:
$(document).on('pjax:success', function() {
onYouTubeIframeAPIReady();
}
但它不起作用。我的问题是如何重新加载 onYouTubeIframeAPIReady();当它必须像那里所说的那样全局定义时 onYouTubeIframeAPIReady function is not calling
定义我的播放器后,我不使用 onYoutubePlayerAPIReady。这是我找到的最佳解决方案,而且有效。
var player = {
playVideo: function(container, videoId) {
if (typeof(YT) == 'undefined' || typeof(YT.Player) == 'undefined') {
window.onYouTubePlayerAPIReady = function() {
player.loadPlayer(container, videoId);
};
$.getScript('//www.youtube.com/player_api');
} else {
player.loadPlayer(container, videoId);
}
},
loadPlayer: function(container, videoId) {
window.myPlayer = new YT.Player(container,
height: 200,
width: 200,
videoId: videoId,
});
}
};
var containerId = 'podcast';
var videoId = '<%= @youtube_id %>';
player.playVideo(containerId, videoId);
我的 YouTube javascript 播放器有问题 api。
我调用这个js代码:
function onYouTubeIframeAPIReady() {
var podcast = document.getElementById('podcast')
var player = new YT.Player( document.getElementById('podcast'));
player.addEventListener('onStateChange', function(e) {
if (e.data === 1) {
alert("play");
}
});
};
使用此 html 代码:
<iframe id="podcast" type="text/html" width="720" height="405"
src="https://www.youtube.com/embed/XXXXXX?cc_load_policy=1&enablejsapi=1&theme=light"
frameborder="0" allowfullscreen>
问题是我使用的是pjax系统,所以导航的时候全局javascript代码没有重新加载。 因此,我在 pjax:success 时重新加载了 javascript 代码的某些部分。我试过这样的事情:
$(document).on('pjax:success', function() {
onYouTubeIframeAPIReady();
}
但它不起作用。我的问题是如何重新加载 onYouTubeIframeAPIReady();当它必须像那里所说的那样全局定义时 onYouTubeIframeAPIReady function is not calling
定义我的播放器后,我不使用 onYoutubePlayerAPIReady。这是我找到的最佳解决方案,而且有效。
var player = {
playVideo: function(container, videoId) {
if (typeof(YT) == 'undefined' || typeof(YT.Player) == 'undefined') {
window.onYouTubePlayerAPIReady = function() {
player.loadPlayer(container, videoId);
};
$.getScript('//www.youtube.com/player_api');
} else {
player.loadPlayer(container, videoId);
}
},
loadPlayer: function(container, videoId) {
window.myPlayer = new YT.Player(container,
height: 200,
width: 200,
videoId: videoId,
});
}
};
var containerId = 'podcast';
var videoId = '<%= @youtube_id %>';
player.playVideo(containerId, videoId);