2015-12-10 2 views
0

Я использую код Modernizr, как показано здесь http://codepen.io/davidgenetic/pen/FmHaD, чтобы проверить, поддерживается ли автовоспроизведение. Это работает, когда сайт просматривается в первый раз на Safari Desktop (v 9.0.1), но после этого выходит из строя (неправильно завершается, что автовоспроизведение не поддерживается, когда оно есть). Удаление кеша и перезагрузка страницы заставляют его работать снова. В других браузерах (Chrome, IE, Firefox, Opera) это работает отлично. кто-нибудь знает, как решить эту проблему?Проверка автовоспроизведения Modernizr неправильно выполняется на Safari Desktop

Modernizr.addTest('autoplay', function(){ 

// Audio file data URIs from comments in 
// [this gist](https://gist.github.com/westonruter/253174) 
// via [mudcube](https://github.com/mudcube) 
var mp3 = 'somesong.mp3'; 

try { 
    var audio = new Audio(); 
    var src = audio.canPlayType('audio/ogg') ? ogg : mp3; 
    audio.autoplay = true; 
    audio.volume = 0; 

    // this will only be triggered if autoplay works 
    audio.addEventListener('play', function() { 
     Modernizr.autoplay = true; 
     // is there a better way to re-evaluate the html classes added by Modernizr? 
     var root = document.getElementsByTagName('html')[0]; 
     root.classList.remove('no-autoplay'); 
     root.classList.add('autoplay'); 

     // or if you're using jQuery: 
     // $('html').toggleClass('no-autoplay autoplay'); 
    }, false); 

    audio.src = src; 
} catch(e) { 
    console.log('[AUTOPLAY-ERROR]', e); 
} 

return false;}); 
+0

Невозможно воспроизвести код, предоставленный вами. Запуск OSX 10.10.5 с Safari версии 9.0.2 (10601.3.9). Всегда отображается для меня. – Ohgodwhy

ответ

0

найденный код размещен в CodePen под названием Modernizr support for autoplay property, не имеет ничего общего с Modernizr. Этот код был написан Питером Коулсом еще в мае 2013 года, а затем модифицирован автором CodePen, чтобы иметь функциональность, подобную Modernizr.

latest version of Modernizr (v3) имеет обнаружение автовоспроизведения видео. К сожалению, я ничего не вижу об обнаружении автоматического автовоспроизведения.

Я вижу один pull request from GrantPax, чтобы добавить функцию автозапуска в Modernizr. Если он будет одобрен, он будет доступен в ближайшем будущем.

В то же время вы можете сделать одну из двух вещей:

  1. аблюдая код тянуть запрос в GrantPax и использовать его. Обратите внимание, что это, вероятно, еще не провело слишком много испытаний.
  2. Посмотрите, есть ли у кого есть good non-Modernizr solution.
  3. Использовать обнаружение видеоизображений Modernizr. Я предполагаю, что браузеры, поддерживающие автовоспроизведение видео, также будут поддерживать автовоспроизведение звука. Но, это всего лишь догадка, так что не верьте мне на слово.

Если вы согласны с моей гипотезой, то следующий код должен работать для вас, если вы импортировать последнюю версию Modernizr с функции Видео Autoplay добавил.

var audioClip = document.getElementById("myAudio"); 
if (Modernizr.videoautoplay) { 
    audioClip.autoplay = true; 
} 
audioClip.load(); 
Смежные вопросы