【问题标题】:onload event doesn't trigger in chrome until after I click "stop loading this page"在我单击“停止加载此页面”之前,onload 事件不会在 chrome 中触发
【发布时间】:2018-06-10 17:41:03
【问题描述】:

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

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

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

根据 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>    

【问题讨论】:

  • 它在我的 Chrome 上运行良好,也许你的 Chrome 有问题?你试过隐身模式吗?
  • 刚刚用icognito模式试了一下,效果很好!!!这是什么意思?
  • 缓存可能吗?
  • @afshin 转到chrome://settings/clearBrowserData,只选择最后一小时的Cached images and files,然后清除数据。应该在那之后工作
  • 那没有做到。页面继续尝试加载并且永不停止!

标签: javascript html


【解决方案1】:

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

【讨论】:

  • 此更新有效。为什么这会起作用,但将事件添加到 标签在 chrome 上失败?!
  • 我不知道,这似乎是 chrome 中的一个错误。其他人说它适用于他们的 chrome 安装,因此您可以尝试重新安装 chrome,或检查日志。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 2013-09-22
    相关资源
    最近更新 更多