在我点击“停止加载此页面”之前,onload事件不会在chrome中触发

时间:2018-06-10 17:41:04

标签: javascript html html5

我有一个带有选择控件的HMTL页面,列出了所有月份。我添加了一个函数来将默认值设置为当前月份。该功能由标签上的onload事件触发。

我已在使用XAMPP安装的apache Web服务器上加载此页面。当我使用FireFox或Microsoft Edge加载页面时,它按预期工作。当我用Chrome加载它时,它没有。除非我点击“停止加载此页面”,否则Chrome上的onload事件不会被触发。我做错了什么?

Page似乎继续尝试加载。除非我点击停止页面,否则它永远不会停止。

根据Vu Huu Cuong的建议,我尝试使用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 :(得分:1)

我无法帮助您使用此方法,但您可以做的是在脚本标记中使用侦听器,而不是在html中。像这样 document.addEventListener("DOMContentLoaded", function(event) { populateSelects(); });

答案 1 :(得分:0)

你的代码似乎在chrome上工作正常。但是如果问题仍然存在,那可能是因为在解析JavaScript或添加了监听器之前事件已经发生。在这种情况下,您应该在添加侦听器之前检查文档是否已经加载。

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

此外,您还可以使用DOMContentLoaded事件,该事件在解析文档时触发,而不是加载load所做的事。