我以前在我的JavaScript文件中有这个代码,它曾经工作过......
jQuery(document).ready(function ($) {
"use strict";
$(window).load(function (event) {
LoadPage();
});
将jQuery更新到版本3.3.1之后,我不得不将$(window).load
替换为$(window).on('load')
,因为它已被弃用。所以这是新代码:
jQuery(document).ready(function ($) {
"use strict";
$(window).on('load', function (event) {
LoadPage();
});
问题是这个新代码,并不是一直按预期运行......在Chrome LoadPage()
方法中按预期方式调用。如果我使用MS Edge,它根本不会遇到LoadPage()
方法。如果我使用Chrome隐身模式,它有时会触及该方法,有时并不知道为什么会发生这种情况?
答案 0 :(得分:2)
好的,我在这里找到答案:jQuery 3 - Github Issues
这是来自 jQuery核心团队的Timmy Willison的解释:
要清楚,我们了解导致这种情况的原因。我们最近做好了准备 处理程序异步启动。这具有难以实现的优点 放弃。缺点是就绪处理器有时会发射 在load事件之后,如果load事件足够快地触发。旁边 你在这个问题上看到的效果是你绑定了一个加载事件 load事件发生后的处理程序。
修复方法是将负载绑定在ready:
之外
这是应该调用函数的方式:
$(function() {
// Things that need to happen when the document is ready
});
$(window).on("load", function() {
// Things that need to happen after full load
});
答案 1 :(得分:0)
您不能指望jQuery跨浏览器实现能够完美运行。没有完美的软件。
首先,我建议使用普通的
window.onload = function() {
// Your code here
};
并尝试在目标浏览器上运行。
其次,您需要努力研究和实施变通方法。如果可行,请将其发布在此处以帮助他人。
答案 2 :(得分:0)
我不得不为两者放弃 jQuery,将它们分开,并使用普通的旧 JavaScript。这在 IE 11、Edge、Chrome 和 Firefox 中表现一致。
document.addEventListener('DOMContentLoaded',function () {'do stuff'}
window.onload = function () {'then do this stuff'}