Javascript 在我们可以在JS中收听之前发生的事件?
我有一个图像事件处理代码如下 HTMLJavascript 在我们可以在JS中收听之前发生的事件?,javascript,html,ecmascript-harmony,Javascript,Html,Ecmascript Harmony,我有一个图像事件处理代码如下 HTML <!DOCTYPE html> <html> <head> <title>Promise DEMO</title> </head> <body> <img src="someImagePath.jpg" class="img-1"/> </body> </html> 在什么情况下,在我开始听之前,这些事件可能会发生 目的
<!DOCTYPE html>
<html>
<head>
<title>Promise DEMO</title>
</head>
<body>
<img src="someImagePath.jpg" class="img-1"/>
</body>
</html>
在什么情况下,在我开始听之前,这些事件可能会发生
目的是理解为什么我应该使用承诺。一般来说,javascript中的事件(包括DOM更改)是完全异步的,因此将侦听器绑定到对象的时间点可以发生在事件发生之前或之后 简单的例子:
此代码之前可以加载图像。我们不知道你什么时候运行它。@zerkms ok,所以可能图像已经加载,我的JS代码仍在添加事件处理程序。如果这是一个拼写错误,我深表歉意。你还没有解释调用JS的方式、地点和时间。听起来确实像是缓存了图像,在这种情况下,加载事件通常会在浏览器读取图像时触发(不过,这取决于浏览器,但大多数情况下是这样做的),如果JS位于页面底部,则不会看到此事件。通过清除浏览器缓存,可以轻松测试是否存在这种情况。您可以找到jquery。
var img1 = document.querySelector('.img-1');
img1.addEventListener('load', function() {
// woo yey image loaded
});
img1.addEventListener('error', function() {
// argh everything's broken
});