img.onerror does not seem to work for IE8

2020-03-29 08:28发布

问题:

I am trying to load an image from a url to check internet connectivity. When no internet connection, it should display a dojo warning dialog. This works for Firefox but does not for IE8.

Following is the code snippet:

var img = new Image();
img.src = userGuideUrl1_img + '?' + (new Date).getTime();
img.onload = function() {
        window.open(userGuideUrl1);
}
img.onerror = function() {
    dojo.addOnLoad(warningDialogFunc);
}

Here warningDialogFunc is a dojo object. Any thoughts? Thanks

回答1:

Could it be that the page is already loaded by the time the img.onerror handler is executed, and IE doesn't rexecute the function for the dojo.addOnLoad(warningDialogFunc)?

Try changing

img.onerror = function() {
    dojo.addOnLoad(warningDialogFunc);
}

to simply:

img.onerror = function() {
  warningDialogFunc();
}


回答2:

You have to set up the handler before you set the source of image, when you change the src attribute, IE will try to download the image and trigger the events.

var img = new Image();
img.onload = function() {
        window.open(userGuideUrl1);
}
img.onerror = function() {
    dojo.addOnLoad(warningDialogFunc);
}
img.src = userGuideUrl1_img + '?' + (new Date).getTime();  // Trigger image download and the handlers.