来自外部网站的图像的后备img src

Mik*_*ike 5 javascript knockout.js

我需要显示来自其他站点的图像,并且具有带有imgsrc引用图像URL 的属性的视图模型.然后我有以下HTML绑定:

<img data-bind="attr: { src : imgsrc }" />
Run Code Online (Sandbox Code Playgroud)

问题是如果绑定图像是外部的,如果外部网站出现问题,我可以获得404或500响应; 因此,我想显示一个后备图像,以防我们无法加载图像.

如何使用KnockoutJS实现这一目标?

gka*_*tai 4

您可以使用该onerror事件。

HTML:

<img id="pic" data-bind="attr: { src : imgsrc }" />
Run Code Online (Sandbox Code Playgroud)

JavaScript:

var myViewModel = {
    imgsrc: ko.computed(function () {
        var pic = document.getElementById('pic');
        pic.onerror = function () {
            pic.src = 'fallback image url';
        };
        return 'image url';
    }, this)
};

ko.applyBindings(myViewModel);
Run Code Online (Sandbox Code Playgroud)

示例: http: //jsfiddle.net/R4SV7/1/

  • 直接从 VM 使用 DOM 是一种反模式,如果您需要自定义访问 DOM,则创建绑定处理程序是可行的方法 (7认同)