image.onError event never fires, but image isn't valid data - need a work around

后端 未结 2 1066
小鲜肉
小鲜肉 2020-11-30 04:54

I am trying to append an image to a page using JavaScript:

image = document.createElement(\'img\');
image.onload = function(){
    document.body.appendChild(         


        
相关标签:
2条回答
  • 2020-11-30 05:34

    Here is my solution. If I've 404 for my image - I try to insert one of my array that is 200 OK (Pure Javascript). Images must be in same path. Otherwise - my func will return 'no-image.png'. jQuery/JavaScript to replace broken images

    0 讨论(0)
  • 2020-11-30 05:41

    In the image.onload event listener, check whether image.width and image.height are both zero (preferably image.naturalWidth and image.naturalHeight, when they are supported).

    If the width and height are both zero, the image is considered invalid.

    Demo: http://jsfiddle.net/RbNeG/

    // Usage:
    loadImage('notexist.png');
    
    function loadImage(src) {
        var image = new Image;
        image.onload = function() {
            if ('naturalHeight' in this) {
                if (this.naturalHeight + this.naturalWidth === 0) {
                    this.onerror();
                    return;
                }
            } else if (this.width + this.height == 0) {
                this.onerror();
                return;
            }
            // At this point, there's no error.
            document.body.appendChild(image);
        };
        image.onerror = function() {
            //display error
            document.body.appendChild(
                document.createTextNode('\nError loading as image: ' + this.src)
            );
        };
        image.src = src;
    }
    
    0 讨论(0)
提交回复
热议问题