そこで、画像の 404 をインターセプトし、最初の画像の読み込みに失敗したときに別の画像にフォールバックする簡単なディレクティブを作成しました。
非常にうまく機能しますが、404 ステータス コードを返しても本文に画像が返される URL で問題が発生しています (Google+ など)。
コードのサンプルをご覧になりたい場合は、https://jsfiddle.net/4cjb5srh/1/をご覧ください。
angular.module('test', [])
.directive('imgMissing', [function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
element.bind('error', function() {
console.log('image missing');
});
}
}
}]);
この例では、Google+ 画像ではエラーは発生しませんが、リンクされた画像では発生します。jqlite bind('error') の代わりに jquery .error() を使用しようとしましたが、問題は解決しませんでした。
編集: JimTheDev は、ngSrc パスが 404 に解決される場合と同じ質問かもしれないと指摘しました。デフォルトにフォールバックする方法はありますか? . 私とこの他の質問はどちらも404にフォールバックすることですが、これは404が返されたがエラーがトリガーされなかった場合に固有のものです(以下でkwan245によって説明されているように応答タイプが指定されている場合)。