Я работаю с "deviceorientation" на моем ноутбуке, а пример jsfiddle, похоже, отлично работает в Chrome, но не отвечает на него Fire Fox. Я думаю, что строка 15 JS не работает каким-то образом...
window.addEventListener('deviceorientation', devOrientHandler, false);
Версия MozOrientation в строке 18, похоже, не поднимает слабину
window.addEventListener('MozOrientation', mozDevOrientHandler, false);
Только что обновленный Firefox. И никаких изменений. Я попытался протестировать на рабочем столе и (неудивительно), что на машине нет необходимых акселерометров/датчиков, поэтому скрипка не работает ни на одном браузере на этом компьютере. Я просматривал вопросы, читая спецификации w3c, поддержка MDN, и я до сих пор не могу ее получить.
Кто-нибудь знает, если это проблема с Firefox? Неужели я испортил настройки или что-то еще? Буду признателен за любую оказанную помощь. Любые идеи относительно того, почему этот пример jsfiddle не работает в Firefox? Примечание: пример "зеленый шар" в ссылке MDN выше также не работает на FF. Первый раз задаем вопрос о SO.
Спасибо!
Изменить: я должен уточнить, что jsfiddle - лучший пример, который я мог найти, и НЕ является моим кодом. Я считаю, что это было из HTML5rocks.com, но я не могу найти этот источник.
В настоящее время Firefox не публикует события DeviceOrientation
на любой платформе Desktop. Ваш обработчик событий не запускается в Firefox просто по той причине, что API не включен в своих сборках браузера Desktop.
С другой стороны, браузеры на основе хрома активировали события DeviceOrientation с некоторыми важными оговорками. Хромированные браузеры обычно возвращают события DeviceOrientation последовательно на Mac OS X из-за общей доступности аппаратных датчиков гироскопа и акселерометра, доступных на компьютерах Apple. Кроме того, браузеры на основе хрома сообщают о значении event.alpha
как undefined
из-за отсутствия компаса или магнитных датчиков, доступных для правильного вычисления.
Ситуация в мобильных браузерах намного лучше и, возможно, является главной целью этого API. Все основные мобильные браузеры (Safari on iOS, Chrome/Opera/Firefox на Android) поддерживают это событие в своей не префиксной форме, то есть window.addEventListener('deviceorientation', function(event) { /* ... */ }, false)
.