Vuejs - Check if image url is valid or broken Vuejs - Check if image url is valid or broken vue.js vue.js

Vuejs - Check if image url is valid or broken


Vue.js has an @error event that you can hook into. From vuejs issue#3261. So you could do:

<template>   <img :src="avatarUrl" @error="imageLoadError" /></template><script>export default {  methods: {    imageLoadError () {      console.log('Image failed to load');    }  }};</script>

Edit: I've discovered this also works for <audio> tags (and I suspect other elements which define a src attribute and load an asset)!

Edit2: Silly me! It's actually an interface for adding a listener to the native onerror event that many HTML elements emit, similar to <input @blur="someHandler">, etc.


It seems that @error works fine. I personally used a method with an event in order to set an alternative image.

<img :src="imageUrl" @error="imageUrlAlt">

The method:

imageUrlAlt(event) {    event.target.src = "alt-image.jpg"}

From Vue.js issue#5404.

Optimal solution:

<img :src="imageUrl" @error="imageUrl='alt-image.jpg'">

Thanks everyone for your valuable comments.


I use a computed property that returns a string with the placeholder URL instead of @error handler like this. This way if source is null or undefined the placeholder will be loaded.

<img :src="source || computedPropertyString" />