Bug 142954
| Summary: | img load event forgets img target when passed through Promise | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Ben <bbirch> |
| Component: | DOM | Assignee: | Nobody <webkit-unassigned> |
| Status: | NEW | ||
| Severity: | Normal | CC: | ahmad.saleem792, ap, karlcow, rniwa, sam |
| Priority: | P2 | ||
| Version: | 528+ (Nightly build) | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
Ben
Wrapping image loading in a Promise does not work as expected.
After the image load event fires event.target contains a IMG element
When the promise is resolved event.target is null
It can be worked around by resolving the promise with event.target rather than event
Here is a demonstration
http://jsfiddle.net/8ys0dn4x/1/
Fails in Safari and webkit nightly
In Firefox the code works as expected
In Chrome there is also a bug, however it is slightly different in that the last promise to resolve in a group still remembers the target, but others are null
Here is a variation on the demonstration
http://jsfiddle.net/d13sf3f2/5/
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Ben
Minimal test case
(new Promise( function( resolve ) {
var i = document.createElement("IMG");
i.onload = function( event ) {
console.log("onload", event.target ); // -> <img ...>
resolve(event);
};
i.src = "http://i.imgur.com/waV028T.jpg";
})).then( function( resolved_event ) {
console.log( resolved_event.target ); // -> null
});
Lucas Forschler
Mass move bugs into the DOM component.
Ahmad Saleem
It seems to work for me and matching with Chrome Canary 127.
Test case from Comment 0 shows two console message across all browsers (Safari 17.5 , Chrome Canary 127 and Firefox Nightly 128).