<script>
оценивается до загрузки DOM, поэтому document.getElementById("xx")
возвращает undefined
.Проверьте консоль ошибок JavaScript, возможно, есть ошибка типа: «Uncaught TypeError: Невозможно прочитать свойство 'style' of null".
- Либо переместите блок
<script>
в конец своего тела Еще лучше, используйте jQuery и что-то вроде этого, см. http://api.jquery.com/ready/
$(function() {
if (window.navigator.userAgent.indexOf('iPhone') != -1) {
if (window.navigator.standalone) {
$('#homescreen').show();
}else{
$('#safari').show();
}
}else{
$("#ios").show();
}
});
Или что может быть еще лучшей и более гибкой альтернативой, это добавлять классык элементу <body>
, затем вы можете легко показать / скрыть что-либо, используя CSS.
$(function() {
if (window.navigator.standalone) {
$('body').addClass('standalone');
}
});
Тогда в CSS все разделы могут быть легко показаны / скрыты на основе этих идентификаторов.
.someContent { display: none; }
body.standalone .someContent { display: block; }
Для селектора мобильных устройств (iPhone) вы могли бы даже избежать переключения пользовательского агента JS (FYI, ваш indexOf
не будет соответствовать iPad или iPod Touch) и лучше полагаться на медиа-запросы CSS, такие как @media only screen and (max-device-width: 480px)
(этотдля iPhone пейзаж и портрет).