У меня есть динамическая видео галерея, и она работает отлично на компьютере. При перемещении в iPad видео начинает загружаться, и оно показывает, что банка не играет значок. Вместо этого я быть бы видео не показывать, пока это не готово играть. Я попытался добавить слушателей событий для "canplaythrough" и "canplay" и когда они происходят, чтобы видео постепенно появилось затем игра. Разве iPad не поддерживает эти события?
new_video = document.createElement('video');
new_video.setAttribute('class', 'none');
new_video.setAttribute('width', '568');
new_video.setAttribute('height', '269');
new_video.setAttribute('id', 'video'+video_num);
current_video.insertBefore(new_video, video_controls);
new_video.load();
new_video.addEventListener('canplaythrough', function() {
$('#video'+video_num').fadeIn(100);
new_video.play();
});
Проверьте, может ли браузер воспроизводить видео, прежде чем вы попытаетесь его загрузить:
function canPlayVorbis() {
var v = document.createElement('video');
return !!(v.canPlayType && v.canPlayType('video/ogg; codecs="theora, vorbis"').replace(/no/, ''));
}
function canPlayMP4() {
var v = document.createElement('video');
return !!(v.canPlayType && v.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"').replace(/no/, ''));
}
function canPlayWebM() {
var v = document.createElement('video');
return !!(v.canPlayType && v.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/no/, ''));
}
Взято из Dive Into HTML5 Appendix A .
На iPad видео не загружается, пока пользователь не запустит событие. Это сделано специально для Apple, чтобы пользователи iPhone или iPad не сжигали свои тарифные планы. Так что ты не сможешь делать то, что хочешь, извините.
Перейдите по этой ссылке и найдите некоторую информацию в разделе «Особенности устройства». Но он не начнет загружать данные, поэтому он не может запустить событие canplaythrough, пока пользователь не коснется его.
автоматически запускает плеер на ipad/iphone:
function fakeClick(fn) {
var $a = $('<a href="#" id="fakeClick"></a>');
$a.bind("click", function(e) {
e.preventDefault();
fn();
});
$("body").append($a);
var evt,
el = $("#fakeClick").get(0);
if (document.createEvent) {
evt = document.createEvent("MouseEvents");
if (evt.initMouseEvent) {
evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
el.dispatchEvent(evt);
}
}
$(el).remove();
}
$(function() {
var video = $("#mobileVideo").get(0);
fakeClick(function() {
video.play();
});
});