Остановить загрузку сайта, чтобы отобразить сообщение

Jimmy Vidzem спросил: 13 июня 2018 в 05:12 в: javascript

Я хочу показать посетителям сообщение до того, как они войдут на сайт, а затем разрешить им продолжить основной сайт с помощью кнопки. Я также не хочу перемещать местоположение основных сайтов.

Аналогично этому:

<script>
    function continue() { /* function to continue loading site */ }
</script><p>This is a message. <button onclick="continue();">I agree</button></p><script>
    //stop loading what's below when someone enters the site, and display only the message
</script><html>
<body>
    <p>This is my main site with a lot of content.</p>
</body>
</html>

Я не могу просто накрыть основной сайт, t хочет, чтобы какие-либо из его функций выполнялись, когда посетитель читает сообщение.

Может ли кто-нибудь указать мне в правильном направлении?

3 ответа

hev1 ответил: 13 июня 2018 в 07:15

Просто покажите большой div, охватывающий всю страницу.

<html>
<head>
<style>
    .message{
     position: fixed;
     top: 0;
     bottom:0;
     left: 0;
     right: 0;
     z-index: 1000;
     background-color: grey;
    }
    </style>
    </head>
    <body>
    <div class="message" id="message">
    <!-- message -->
    Message<br/>
    <button onClick="document.getElementById('message').style.display='none';">
    Continue to Site
    </button>
    </div>
    <div class="content">
    <!-- Main content -->
    Main content
    </div>
    </body>
 </html>
Jimmy Vidzem ответил: 13 июня 2018 в 07:07
Да, нет, как я уже сказал, я не хочу этого делать. Спасибо хоть.
hev1 ответил: 13 июня 2018 в 07:20
@JimmyVidzem Я написал еще один ответ, который может удовлетворить ваши потребности.
bato3 ответил: 13 июня 2018 в 05:26

Вы не можете остановить загрузку страницы JS. В некоторой ситуации JS может остановить страницу рендеринга. Но он по-прежнему читается машиной / show-source.

Если вы не хотите использовать обложку, вы можете скрыть некоторые элементы с помощью style="display:none".

Если страница должен быть нечитаемым машиной, вы должны понимать это на стороне сервера:

<?php 
session_start(); 
if(!empty($_POST['policy'])) $_SESSION['accepted_policy'] = true; 
if(empty($_SESSION['accepted_policy'])) { 
?><form action="?" method="post"> 
<input type="checkbox" value="1" name="policy"> I've accepted ...<br /> 
<input type="submit" > </form>
<?php die(); 
} ?>
normal page

Если вы не хотите выполнять какой-либо JS до continue(), вы можете запустить его из этого вместо $.ready()

hev1 ответил: 13 июня 2018 в 07:20

Используйте window.stop(), чтобы больше не загружать окно. Однако это не будет работать в Internet Explorer или Microsoft Edge.

<html>
<head>
</head>
<body>
Content that will be shown
<script>
window.stop();
</script>
Content that will not be shown
</body>
</html>

Дополнительное видео по вопросу: Остановить загрузку сайта, чтобы отобразить сообщение

jQuery подгрузка контента без перезагрузки

Прелоадер с процентной загрузкой / Практика по JavaScript

Уроки JavaScript | #5 - Взаимодействие с пользователем:alert,prompt,confirm