img.onerror does not seem to work for IE8

2020-03-29 08:02发布

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

2条回答
够拽才男人
2楼-- · 2020-03-29 08:42

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.
查看更多
啃猪蹄的小仙女
3楼-- · 2020-03-29 08:43

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();
}
查看更多
登录 后发表回答