#css #internet-explorer #safari #hide #loaded
#css #internet-explorer #safari #скрыть #загружено
Вопрос:
Вот странный — то, что отлично работает в IE, но не в Safari. Вот мой код:
<script type="text/javascript">
$(document).ready(function(){
$('body').css('display', 'block');
});</script>
</head>
<body style="margin:0; display:none;">
Цель состоит в том, чтобы установить для отображения тела значение none, пока документ не будет готов. Затем измените свойство отображения на block .
Есть идеи, что я здесь делаю не так?
Комментарии:
1. Кажется, это работает для меня (mac safari) jsfiddle.net/Vkzcd
2. Это плохая идея. Пользователи без включенного JavaScript никогда не смогут ничего увидеть.
3. Странно. Я вижу, что это действительно работает на сайте jsfiddle. У меня есть несколько других вещей, связанных с кодом. Должен быть конфликт…
4. МОГУ ЛИ я ДОБАВИТЬ какой-то условный код, такой, чтобы, если javascript не включен, он загружался немедленно, но если он включен, он ожидает отображения, пока документ не будет готов?
Ответ №1:
МОГУ ЛИ я ДОБАВИТЬ какой-то условный код, такой, чтобы, если javascript не включен, он загружался немедленно, но если он включен, он ожидает отображения, пока документ не будет готов?
Да, вы можете:
<script type="text/javascript">
$(function(){
$('body').css('display', 'block');
});
</script>
</head>
<body>
<script type="text/javascript">
$('body').css('display','none'); // this will execute before $(document).ready()
</script>
Ответ №2:
Вы должны использовать jQuery .load(), если хотите, чтобы страница действительно была готова (изображения тоже загружены) перед ее отображением. С другой стороны, вы вообще не должны скрывать тело с помощью css, так как люди с отключенным javascript будут считать, что сайт просто упал. Если, конечно, вы не создаете приложение, на 100% зависящее от javascript.
Комментарии:
1. Кто отключает javascript? Конечно, не для обычного пользователя. Вы должны отправиться на поиски, чтобы найти настройку. Держу пари, 99% людей установили его по умолчанию и не задумываются об этом дважды. Я ошибаюсь?
2. Это звучит довольно обоснованно. Этот 1% может быть небольшим, но это будет один злой 1%. Но опять же, это собственное решение отказаться от их поддержки. Я сам вообще не поддерживаю IE в своих проектах, и это немного больший процент.
3. И еще одна вещь, которую я забыл. Если javascript не загружается по той или иной причине, пользователь вообще не увидит содержимое. Также этот подход может довольно долго показывать пустую страницу, если у вас много контента и javascript для загрузки. По сути, лучшим подходом imho является прогрессивное улучшение: добавьте свой css в <head> , загрузите содержимое страницы и в конце <body> загрузите <scripts> .