Skip to content

Commit dd8f3be

Browse files
authored
Merge pull request #2754 from javidalpe/main
Fix preload plugin onerror callback
2 parents 669568d + 6bf9ea9 commit dd8f3be

File tree

2 files changed

+25
-20
lines changed

2 files changed

+25
-20
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"jspsych": patch
3+
---
4+
5+
Fix preload plugin onerror callback so that it returns proper src information when there are 404 errors.

packages/jspsych/src/modules/plugin-api/MediaAPI.ts

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -102,15 +102,15 @@ export class MediaAPI {
102102
}
103103
);
104104
};
105-
request.onerror = function (e) {
105+
request.onerror = (e) => {
106106
let err: ProgressEvent | string = e;
107-
if (this.status == 404) {
107+
if (request.status == 404) {
108108
err = "404";
109109
}
110110
callback_error({ source: source, error: err });
111111
};
112-
request.onloadend = function (e) {
113-
if (this.status == 404) {
112+
request.onloadend = (e) => {
113+
if (request.status == 404) {
114114
callback_error({ source: source, error: "404" });
115115
}
116116
};
@@ -176,24 +176,24 @@ export class MediaAPI {
176176
return;
177177
}
178178

179-
for (var i = 0; i < images.length; i++) {
180-
var img = new Image();
181-
182-
img.onload = function () {
179+
for (let i = 0; i < images.length; i++) {
180+
const img = new Image();
181+
const src = images[i];
182+
img.onload = () => {
183183
n_loaded++;
184-
callback_load(img.src);
184+
callback_load(src);
185185
if (n_loaded === images.length) {
186186
callback_complete();
187187
}
188188
};
189189

190-
img.onerror = function (e) {
191-
callback_error({ source: img.src, error: e });
190+
img.onerror = (e) => {
191+
callback_error({ source: src, error: e });
192192
};
193193

194-
img.src = images[i];
194+
img.src = src;
195195

196-
this.img_cache[images[i]] = img;
196+
this.img_cache[src] = img;
197197
this.preload_requests.push(img);
198198
}
199199
}
@@ -221,9 +221,9 @@ export class MediaAPI {
221221
const request = new XMLHttpRequest();
222222
request.open("GET", video, true);
223223
request.responseType = "blob";
224-
request.onload = function () {
225-
if (this.status === 200 || this.status === 0) {
226-
const videoBlob = this.response;
224+
request.onload = () => {
225+
if (request.status === 200 || request.status === 0) {
226+
const videoBlob = request.response;
227227
video_buffers[video] = URL.createObjectURL(videoBlob); // IE10+
228228
n_loaded++;
229229
callback_load(video);
@@ -232,15 +232,15 @@ export class MediaAPI {
232232
}
233233
}
234234
};
235-
request.onerror = function (e) {
235+
request.onerror = (e) => {
236236
let err: ProgressEvent | string = e;
237-
if (this.status == 404) {
237+
if (request.status == 404) {
238238
err = "404";
239239
}
240240
callback_error({ source: video, error: err });
241241
};
242-
request.onloadend = function (e) {
243-
if (this.status == 404) {
242+
request.onloadend = (e) => {
243+
if (request.status == 404) {
244244
callback_error({ source: video, error: "404" });
245245
}
246246
};

0 commit comments

Comments
 (0)