vue 使用v-lazy 跨域图片文件显示不了
时间: 2023-12-31 15:05:53 浏览: 209
如果你使用 `v-lazy` 指令来加载跨域图片,可能会遇到跨域问题,因为浏览器默认情况下不允许在跨域资源中使用 `canvas` API 来读取图像数据。解决这个问题有两种方法:
1. 在服务器端设置响应头 `Access-Control-Allow-Origin` 来允许跨域访问。具体实现方法可以参考 [CORS(跨域资源共享)详解](https://www.ruanyifeng.com/blog/2016/04/cors.html)。
2. 将图片转换为 base64 编码的格式,然后将编码后的字符串作为 `img` 标签的 `src` 属性值。这样就不需要跨域访问了。具体实现方法可以使用 `FileReader` API 将图片文件读取为 base64 编码的字符串,然后将字符串赋值给 `img` 标签的 `src` 属性。示例代码如下:
```html
<template>
<div>
<img :src="lazyImg" v-lazy />
</div>
</template>
<script>
export default {
data() {
return {
lazyImg: ''
}
},
mounted() {
this.loadImg()
},
methods: {
loadImg() {
const reader = new FileReader()
reader.onload = (e) => {
this.lazyImg = e.target.result
}
reader.readAsDataURL('http://example.com/image.jpg')
}
}
}
</script>
```
希望这些信息能对你有所帮助!
阅读全文