当通过导入包含 jQuery 时,窗口加载事件不会触发
window load event doesn't fire when jquery included via import
我有带有窗口加载事件的空白页面,它工作正常,直到我没有通过导入(es6 模块(+ JSPM(babel 转译器(包含 jquery 库来让事情正常工作,找不到原因,有什么想法吗?
这就是我在页面中得到的全部内容:
应用.js
"use strict";
import "jquery"; // if i remove this event will fire
window.addEventListener("load", function(event){
console.log("loaded");
}, true);
在我的 HTML 中,我执行以下操作(在开发模式下 ofc(
索引.html
<script src="jspm_packages/system.js"></script>
<script src="jspm.config.js"></script>
<script>
System.import("assets/js/app");
</script>
附言我在 htmt 中没有身体负载等
解决!
JSPM 仅在开发模式下异步加载模块,在生产模式下,所有模块和库都已捆绑到一个文件中,因此事物加载同步并且一切正常。谢谢@T.J.克劳德
我怀疑你会发现System.import
异步导入的东西,所以你有一个竞争条件。当您删除 jQuery 的导入时,您的代码加载和运行速度会更快,让它在 window.load
事件触发之前发生。导入代码时,运行代码会延迟(等待加载 jQuery 文件(,并且您错过了事件。
您可以轻松确定是否是这种情况(请参阅注释(:
index.html
:
<script src="jspm_packages/system.js"></script>
<script src="jspm.config.js"></script>
<script>
window.addEventListener("load", function(event){ // Added
console.log("index.html - got load event"); // Added
}, true); // Added
System.import("assets/js/app");
</script>
app.js
:
"use strict";
import "jquery"; // if i remove this event will fire
console.log("app.js running"); // Added
window.addEventListener("load", function(event){
console.log("loaded");
}, true);
如果您看到以下内容:
索引.html - 获取加载事件应用程序.js正在运行
。你知道你错过了这次活动。
如果您的目标是现代浏览器,则可以修改app.js
代码以通过document.readyState
处理这种情况:
"use strict";
import "jquery";
function loadCallback() {
console.log("loaded");
}
if (document.readyState === "complete") {
setTimeout(loadCallback, 0);
} else {
window.addEventListener("load", loadCallback, true);
}
(请注意,为了避免混乱,我们始终异步调用loadCallback
,以便上述块后面的任何代码在运行之前都已可靠地完成。
如果您需要支持不提供document.readyState
的浏览器,您可能需要在 index.html
(blech( 中挂接您的 load
事件处理程序,或者交替使用 jQuery 的 ready
功能。如果您使用 ready
,请注意它不能可靠地异步调用您的函数(如果ready
已经触发,它将是同步的(。:-|此外,ready
触发的时间比load
早得多(通常这是一件好事,但如果您依赖于已加载的图像......
- 召回窗口加载事件 - javascript
- 仅加载事件序列
- Jquery onclick事件加载XML的特定节点
- jQuery事件加载
- Javascript:js 不会在事件加载时执行
- PhantomJS - 从单击事件加载的内容不会加载到 DOM
- 事件加载 jQuery 和 YouTube API
- 如何在单击时运行事件加载
- 将事件加载到日历中
- zurbfoundation和ajax上的事件加载了内容
- Jquery 不绑定事件加载
- 如何模拟按键事件加载
- jQuery 事件加载在 onFinish 执行
- Xhr 上传事件加载问题
- Opera用户脚本事件"加载"并不总是有效
- 事件加载并准备就绪,但未触发
- 用javascript onclick事件加载并播放gif
- Aurelia -事件加载/惰性加载图像
- 复选框onclick事件加载,就好像选中了一样
- 当am使用jquery加载事件加载图形页面时,外部页面Morris图表未加载