Я написал простой видеопроигрыватель для одной страницы моего сайта, который работает, нажимая кнопки, чтобы изменить атрибут src
тегов источника, а затем вызывая нагрузку на элемент проигрывателя.Элемент видео выглядит следующим образом:
<video id="player" title="Video 1" controls width="600" height="480" preload="metadata">
<source src="videos/english.mp4" type="video/mp4" />
<source src="videos/english.webm" type="video/webm" />
<source src="videos/english.ogv" type="video/ogg" />
<object type="application/x-shockwave-flash" data="plugins/flash/player.swf" width="600" height="480">
<param name="movie" value="plugins/flash/player.swf" />
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="flashvars" value="file=../../videos/english.mp4" />
<p>Your browser can't play HTML5 video. <a href="videos/english.webm">Download it</a> instead.</p>
</object>
</video>
А скрипт, относящийся к событию click, выглядит следующим образом:
$(".playerControl").live("click tap",function(){
// If the player isn't playing this divs video
if($("#player").data('currentVideo') != $(this).data('videoID')){
// Swap active button states
$(".playerControl.active").removeClass('active');
$(this).addClass('active');
// Pause the current video and swap the content, then load the player
$("#player")[0].pause();
$("#player").html($(this).data('innerHTML'));
$("#player").data({
innerHTML: $(this).data('innerHTML'),
currentVideo: $(this).data('videoID')
});
$("#player")[0].load();
updateBackup();
}
});
Это прекрасно работает на Chrome и, вероятно, Firefox, но самый странныйпроблема возникает, когда я использую это в Safari.Первое видео будет отображаться, но каждое второе видео, которое я пытаюсь воспроизвести, даже не пытается загрузить.Вызов load
на проигрывателе из консоли также не дает результатов, но проверка проигрывателя показывает, что его источники верны, и видео будет воспроизводиться, если мне удастся щелкнуть его после того, как видео не работает.
Надеюсь, это звучит не слишком запутанно, в основном Safari не загружает все остальные видео, которые я пытаюсь воспроизвести, но без проблем воспроизводит какие-либо файлы самостоятельно.У меня есть ощущение, что есть какая-то дополнительная функция, которую я должен вызвать, чтобы заставить ее работать, но я не уверен.
Обновление: я переписал событие click для выполнения независимо от того, какая кнопка нажата, и онапроблема с загрузкой видео при каждом следующем нажатии, а не с самим видео.
Обновление 2: я попытался добавить пару строк, которые очищали HTML-видео и загружали перед вставкой нового HTML-кода, чтобы инициализировать его, иэто привело к тому, что он начал загружаться примерно две трети времени.