Скрывать тело до загрузки содержимого — работает в IE, но не в Safari?

#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> .