Событие onload не запускается в Chrome до тех пор, пока я не нажму «остановить загрузку этой страницы» - PullRequest
0 голосов
/ 10 июня 2018

У меня есть страница HMTL с элементом управления select, в котором перечислены все месяцы.Я добавил функцию, чтобы установить значение по умолчанию для текущего месяца.Функция вызывается событием onload в теге.

Я загрузил эту страницу на веб-сервер apache, установленный с XAMPP.Когда я загружаю страницу с помощью FireFox или Microsoft Edge, она работает как положено.Когда я загружаю его с Chrome, это не так.Событие onload на Chrome не запускается, пока я не нажму «Остановить загрузку этой страницы»Что я делаю не так?

Страница, похоже, продолжает пытаться загрузить.Он никогда не останавливается, пока я не нажму на страницу остановки.

По совету Ву Хуу Куонга я попробовал его в режиме Chrome Incongito, и он работает, как и ожидалось.Почему он не работает в обычном режиме?!

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">

    function populateSelects(){
        var today = new Date();
        var m = today.getMonth();
        document.getElementById('s_month').getElementsByTagName('option')[m].selected = 'selected';
    }

</script>
<title>Page Title</title>
</head>

<body onload="populateSelects()">

<div > 
    <select id='s_month' name='s_month' >
        <option value="january">January</option>
        <option value="february">February</option>
        <option value="march">March</option>
        <option value="april">April</option>
        <option value="may">May</option>
        <option value="june">June</option>
        <option value="july">July</option>
        <option value="august">August</option>
        <option value="septemeber">Septemeber</option>
        <option value="october">October</option>
        <option value="november">November</option>
        <option value="december">December</option>
    </select>

</div>

</body>
</html>    

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Я не могу помочь вам заставить этот метод работать, но вы могли бы сделать так, чтобы слушатель был в теге скрипта, а не в HTML.Как это document.addEventListener("DOMContentLoaded", function(event) { populateSelects(); });

0 голосов
/ 10 июня 2018

Ваш код работает нормально на Chrome.Но если проблема не устранена, это может быть связано с тем, что событие уже произошло до того, как был проанализирован JavaScript или был добавлен прослушиватель.В этом случае вы должны проверить, был ли документ уже загружен, прежде чем добавлять прослушиватель.

    if (document.readyState === "complete") populateSelects();
    else window.addEventListener("load", populateSelects);

Кроме того, вы также можете использовать событие DOMContentLoaded, которое запускается, когда документ анализируется, а не загружается, чтоэто то, что load делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...