Есть ли какая-либо причина, по которой window.matchMedia('screen') вернул бы false в веб-браузере?

Я запускаю следующий код:

var hasMatchMediaSupport = (typeof window.matchMedia !== 'undefined') ? !!window.matchMedia('screen').matches : false;

Есть ли причина, по которой эта проверка вернула бы ложь? Это происходит только в браузерах Firefox в самых разных операционных системах. Одна важная деталь заключается в том, что этот код выполняется внутри рекламного блока, иногда внутри рекламных блоков HTML5.

Это происходит в Windows 7, Windows 8, Windows 10, Mac OS X 10.8 и некоторых других операционных системах с версиями Firefox от 36 до 41.

Изменить: нашел этот отчет об ошибке здесь и смог скопировать в Firefox 41 на Mac OS X 10.10 - matchMedia не работает правильно внутри скрытых фреймов.

1 ответ

Ошибка была исправлена, чтобы теперь возвращать ненулевое значение. Например:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<style>
 .hidden { display: none; }
</style>
 
</head>

<body>
  
<iframe class="hidden" src="data:text/html;charset=utf8;,<script>document.title = window.matchMedia('screen').matches;alert(document.title)</script>" height="200" width="200"></iframe>

</body>

</html>

Рекомендации

Другие вопросы по тегам