2016-03-14 2 views
-1

Прежде всего, в компьютерных браузерах все в порядке. У меня есть следующая проблема только на mobile !!video.play() работает только при щелчке

У меня есть HTML видео, как это:

<video id="myVid" poster="poster.png" muted autoplay loop> 
     <source src="vid.webm" type='video/webm'> 
     <source src="vid.mp4" type='video/mp4'> 
</video> 

Это не autoplayed на мобильном телефоне, так что я должен заставить играть его с помощью JavaScript: Я использовал

$('#myVid').click(function() { 
    $('#myVid').get(0).play(); 
}); 

Это работает, но это не делает работающие на $ (документ) .ready():

$(document).ready(function() { 
    $('#myVid').get(0).play(); 
}); 
+2

Это _intended_, чтобы предотвратить автоматическое воспроизведение видео и использование мобильных данных без разрешения. Сначала пользователю необходимо сначала взаимодействовать с видео, и нет никакого способа обойти это (а также не стоит даже пытаться обойти его). Вот некоторые документы от Apple и других мобильных OS-es последовали этому примеру: https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html#// apple_ref/doc/uid/TP40009523-CH5-SW1 – somethinghere

ответ

0

Autoplay не работает со всеми версиями iOS и современными версиями Android. Это делается для предотвращения чрезмерного использования полосы пропускания.

Технически это должно быть возможно, однако я не тестировал его.

Попробуйте изменить часть кода, который у вас уже есть немного:

$('body').on('click', '#myVid', (function() { 
    $(this).get(0).play(); 
}); 

Затем вызвать нажмите на этом элементе с некоторой задержкой, когда страница завершения загрузки:

$(document).ready(function() { 
    setTimeout(function() { 
     $('#myVid').trigger('click') 
    }, 100); 
}); 
+0

Я знаю, что это может решить проблему, но это морально совершенно другая проблема. Есть причина, почему это реализовано как таковое. Тем не менее, я уверен, что это не должно работать, поскольку «триггер» выполняется кодом, а не пользователем. Однако добавление «touchstart» в самом документе и запуск его с этим взаимодействием будет работать (согласно этому решению: http://stackoverflow.com/questions/9075520/how-to-autoplay-html5-mp4-video-on -android # answer-24917996) – somethinghere

+0

Я согласен с моральной частью вопроса, однако этот вопрос не считает это очевидным. –

+1

Я знаю, но ... и это просто лично - я решил не пытаться предложить обходной хак (во всяком случае, привнесет их достойный поход) и объяснить хорошие, веские рассуждения. Не волнуйтесь, я не буду отрицать, так как ответ - возможно, поскольку я его не проверял - правильно. – somethinghere

Смежные вопросы