Подтвердить что ты не робот

Does document.body.innerHTML = "" очистить веб-страницу?

Когда я обновляю страницу ниже в FF 3.0, я ожидал, что веб-страница будет очищена, но это не так.

Почему document.body.innerHTML = "" не удаляет страницу?

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

...
<body>
    <script type="text/javascript">
        document.body.innerHTML = "";
        for (var i = 0; i < 1000000000; i++) {
        }
    </script>

    <img src="images/web.gif" /><br />

    <script type="text/javascript">
        document.write( "hello<br />");
    </script>

    <img src="images/warning.png" /><br />

</body>
4b9b3361

Ответ 1

document.body.innerHTML = ''; очищает body, да. Но он очищает innerHTML, как это происходит в момент запуска кода. Когда вы запускаете код до того, как изображения и script на самом деле находятся в body, он пытается очистить body, но ничего не очистить.

Если вы хотите очистить body, вам нужно запустить код после того, как body будет заполнено содержимым. Вы можете сделать это, поставив блок <script> в качестве последнего дочернего элемента body, поэтому все загружается до запуска кода или вам нужно каким-то образом прослушать событие dom:loaded.

Ответ 2

Чтобы изложить ответ Douwem, в тэге script поместите свой код в onload:

<script type="text/javascript">
    window.onload=function(){
       document.body.innerHTML = "";
    }
</script>

Ответ 3

Соглашаясь с ответами Дуэ Маана и Эрика, здесь есть несколько других вещей, которые могут вам пригодиться.

Во-первых, в ваших тегах заголовка вы можете ссылаться на отдельный файл JavaScript, который затем можно использовать повторно:

<script language="JavaScript" src="/common/common.js"></script>

где common.js - ваш многократно используемый файл функции в каталоге верхнего уровня, называемом common.

Во-вторых, вы можете задержать работу script с помощью setTimeout, например:

setTimeout(someFunction, 5000);

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

Ответ 4

Как говорили другие, простое решение - поместить ваш скрипт внизу страницы, потому что все элементы DOM загружаются синхронно сверху вниз. В противном случае, я думаю, что вы ищете document.onload(() => {callback_body}) или window.onload(() => {callback_body}), как сказал Эрик. Это позволяет вам выполнить сценарий, когда происходит событие dom:loaded, как сказал Доу Маан. Не уверен насчет свойств window.onload, но document.onload запускается только после загрузки всех элементов, css и скриптов. В вашем случае:

<script type="text/javascript">
    document.onload(() =>
        document.body.innerHTML = "";
    )
</script>

или, если вы используете старый браузер:

<script type="text/javascript">
    document.onload(function() {
        document.body.innerHTML = "";
    })
</script>

Ответ 5

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

Затем вы можете сделать что-то вроде:

$(document).ready(function() {
$(document).remove();
});

а также выборочное удаление элементов (все DIV, только DIV с определенными классами и т.д.)

Ответ 6

Я очищаю свой экран, используя функцию, которая

var clear_body = function (){
    var lista = document.body.childNodes;
    for (var i = lista.length - 1; i >= 0 ;i--){
        document.body.removeChild(lista[i])
    }
}