Таким образом, не существует окончательного теста для идентификации Metro IE против Desktop IE, но, похоже, есть несколько разных фрагментов данных, которые вы можете попытаться использовать, чтобы предположить, что это Metro.К сожалению, ни один из найденных предметов не может быть объяснен другими настройками.Другими словами, для всех найденных мной «функциональных» тестов Desktop IE можно было настроить таким образом, чтобы заставить тесты думать, что он работает в Metro.
ActiveX отключен (Metro не позволяетлюбое содержимое ActiveX, но в настольном IE он также может быть отключен):
function isActivexEnabled() {
var supported = null;
try {
supported = !!new ActiveXObject("htmlfile");
} catch (e) {
supported = false;
}
return supported;
}
Проверка строки агента пользователя (Metro всегда будет работать в 64-битном режиме, но не на 32-битной машине, и DesktopIE может быть настроен для работы в 64-битном режиме, а также не уверен, насколько популярной будет любая из этих опций)
function isWin64() {
return navigator.platform == "Win64";
}
Полноэкранная проверка (Metro всегда будет в полноэкранном режиме, однако Desktop IE также может работатьв полноэкранном режиме, но это может быть использовано в качестве подтверждающего доказательства режима Metro)
function isFullScreen() {
return (window.innerWidth == screen.width &&
window.innerHeight == screen.height);
}
Короче говоря, я думаю, что вам нужно попробовать проверить кучу функций, а затем догадаться, что нет окончательногопуть.Или вы можете просто признать, что MS не хочет, чтобы вы это делали, и использовать обнаружение функций для функций, которые вы хотите использовать.
Для тех, кто хочет попытаться предоставить пользовательский интерфейс, чтобы обратиться к содержащему пользовательский интерфейс браузера.(например, чтобы указать, как прикрепить веб-страницу), имейте в виду, что другие приложения Metro могут встраивать браузер IE10 Metro в качестве элемента управления, поэтому даже если вы можете определить браузер как Metro против рабочего стола, пользовательский интерфейс может быть не там, где вы находитесь.попытался бы сослаться на это, так что это может оказаться довольно сложной ситуацией, чтобы получить правильные 100% времени.Так что либо не пытайтесь, либо вы можете попробовать другие методы обнаружения и признать, что существуют варианты использования, при которых вы могли отображать неправильный пользовательский интерфейс.