Vue 2 图像无法在某些浏览器中呈现

Posted

技术标签:

【中文标题】Vue 2 图像无法在某些浏览器中呈现【英文标题】:Vue 2 Images not rendering in some browsers 【发布时间】:2018-01-12 15:10:24 【问题描述】:

我正在使用 Laravel 5.4 和 Vue 2.4.2。由于 axios 返回的数组,我正在使用 v-for 进行如下渲染:

<div class="card" style="width: 20rem; margin-left:1rem;" v-for="ad in ads" v-cloak>
      <img v-if="ad.image1" class="card-img-top" :src="'/public/ads/' + ad.image1" >
      <img v-else class="card-img-top" src="/public/logo.png" >
      <div class="card-block">
        <h4 class="card-title">@ ad.title </h4>
        <p class="card-text">
            @ ad.description <br><hr>
            <strong>$@ ad.cost </strong>
        </p>
        <a href="#" class="btn btn-primary">Contact us</a>
    </div>
</div>

我尝试使用:srcv-attr:srcv-bind:src

信息已成功显示,但唯一不起作用的是:

<img v-if="ad.image1" class="card-img-top" :src="'/public/ads/' + ad.image1" >

这也很好用:

<img v-else class="card-img-top" src="/public/logo.png" >

当我在 Firefox 的开发者工具中看到加载的信息时,我得到“无图像”加载得很好,但是当我将 URL 悬停时有一条消息:“无法加载”:

编辑 1:

奇怪的是,如果在开发者工具中我从 src 属性中复制 URL 并将其粘贴到浏览器中,我可以正确地看到图像。

编辑 2:这不是唯一奇怪的事情,它也适用于 Microsoft Edge 和 Google Chrome 移动设备,但不适用于 Firefox 或 Google Chrome。

这是 Vue 2 根据开发者工具生成的元素:

<img src="/public/ads/hcpOW7aPhJFXWR8MP0poRfYYvmcRKjq2M6irUsD7.jpeg"  class="card-img-top vjnhddxuzwlropukknbb">

这是正在显示的生成元素:

<img src="/public/logo.png"  class="card-img-top">

【问题讨论】:

【参考方案1】:

啊,我测试了这个例子,但它确实有效。

data()
	return 
		isShowImage : true,
		imgArr : ['banner.jpg', 'logo.png', 'about.jpg']
	
<div v-for="img of imgArr">
	<img v-if="isShowImage" src="/data/images/banner.jpg"  style="width:100px;height:30px;"/>
	<img v-else src="/data/images/logo.png" style="width:100px;height:30px;" />
</div>
<button @click="isShowImage = !isShowImage" type="button" name="button">show</button>

你确定你的图片路径是对的吗?

【讨论】:

我需要验证那里有一张图片,如果不是,我使用v-else 显示另一张图片。但我会读到v-show 以及如何实现它 @Maramal 对不起,我最后回答错了。我测试它有效。您可以使用 Firefox Dev Network 工具检查图像路径吗?如果浏览器告诉你“没有图像”,那是真的没有找到图像, 我添加了开发工具外观的图像,我复制并粘贴了与浏览器提供的完全相同的完整限定 URL,然后我被重定向到图像。奇怪的是它可以在 Microsoft Edge 和我的手机上运行,​​而不是在 Firefox 或 Chrome 上运行

以上是关于Vue 2 图像无法在某些浏览器中呈现的主要内容,如果未能解决你的问题,请参考以下文章

带有dataURL href的图像的SVG在某些引擎中无法正确呈现

动态类未在浏览器顺风中呈现 - Vue

html5 canvas怎么载入图像

html5 canvas怎么载入图像

如何让二进制图像在浏览器中呈现?

在浏览器中打开 SVG 会呈现 XML 代码而不是图像