刷新后未调用文档加载事件
Document load event not being called after refresh
我有以下功能:
jQuery(document).ready(function(){
window.addEventListener("load", function (){
alert("hello");
});
它在第一个 运行 上工作,但当我点击刷新按钮时它停止工作。
如果我清空缓存或硬重新加载,它会再次工作一次。
这是怎么回事?我该如何解决这个问题?
尝试在 jQuery 的 document.ready()
之外添加处理程序:
window.addEventListener("load", function (){
...
});
jQuery(document).ready(function(){
...
};
在第一个 运行 页面上加载外部资源(例如图像)可能需要一些时间。在此期间调用 jQuery(document).ready(...)
。
当它完成加载外部资源时,load
事件被触发并且函数正常工作。
奇怪的是,在刷新时,资源已经被缓存了,所以 window.load
事件被触发得如此之快,并且发生在 之前 jQuery(document).ready()
,并且因为您在事件触发后添加事件处理程序,不会调用处理程序。当您清除缓存时,它再次工作。
或者,您可以先检查文档是否完成,如下所示:
function document_loaded(){
// To be called when the document is loaded.
...
};
document.readyState == "complete" ? document_loaded() : window.addEventListener("load", document_loaded);
无论您将代码放在何处,这都将起作用。
如果你想运行每次加载页面时都执行一个脚本,最好的方法是将代码直接放入主函数中:
jQuery(document).ready(function(){
alert("hello");
};
来自文档:https://learn.jquery.com/using-jquery-core/document-ready/:
Code included inside $( document ).ready()
will only run once the
page Document Object Model (DOM) is ready for JavaScript code to
execute.
如果你还想等待你的资源加载完成,你应该写:
jQuery(window).on("load", function(){
alert("hello");
});
我有以下功能:
jQuery(document).ready(function(){
window.addEventListener("load", function (){
alert("hello");
});
它在第一个 运行 上工作,但当我点击刷新按钮时它停止工作。
如果我清空缓存或硬重新加载,它会再次工作一次。
这是怎么回事?我该如何解决这个问题?
尝试在 jQuery 的 document.ready()
之外添加处理程序:
window.addEventListener("load", function (){
...
});
jQuery(document).ready(function(){
...
};
在第一个 运行 页面上加载外部资源(例如图像)可能需要一些时间。在此期间调用 jQuery(document).ready(...)
。
当它完成加载外部资源时,load
事件被触发并且函数正常工作。
奇怪的是,在刷新时,资源已经被缓存了,所以 window.load
事件被触发得如此之快,并且发生在 之前 jQuery(document).ready()
,并且因为您在事件触发后添加事件处理程序,不会调用处理程序。当您清除缓存时,它再次工作。
或者,您可以先检查文档是否完成,如下所示:
function document_loaded(){
// To be called when the document is loaded.
...
};
document.readyState == "complete" ? document_loaded() : window.addEventListener("load", document_loaded);
无论您将代码放在何处,这都将起作用。
如果你想运行每次加载页面时都执行一个脚本,最好的方法是将代码直接放入主函数中:
jQuery(document).ready(function(){
alert("hello");
};
来自文档:https://learn.jquery.com/using-jquery-core/document-ready/:
Code included inside
$( document ).ready()
will only run once the page Document Object Model (DOM) is ready for JavaScript code to execute.
如果你还想等待你的资源加载完成,你应该写:
jQuery(window).on("load", function(){
alert("hello");
});