有没有办法在<amp-img>中使用onerror()属性

dom*_*dom 4 html amp-html amp-img

有没有办法使用onerror属性<amp-img>

它在html中工作得很好.

<img src="../images/some-logo1.jpg" onerror="this.src='../images/no-img.jpg';" class="posting-logo-img">
Run Code Online (Sandbox Code Playgroud)

但是amp html会在amp-img中创建img标签

<amp-img src="/img/amp.jpg" alt="AMP" class="posting-logo-img" onerror="this.src='../images/no-img.jpg';" >
  <noscript>
    <img src="/img/amp.jpg" alt="AMP"> 
  </noscript>
</amp-img>
Run Code Online (Sandbox Code Playgroud)

GuR*_*uRu 7

我们不能使用onerror属性,amp-img但是,amp提供了Offline Fallback功能而不是onerror.

amp-img支持AMP的常用属性,这意味着您可以在无法加载图像的情况下显示回退.这非常适合为AMP添加离线支持.

当原始图像不可用或返回404时,这将为您提供在fallback div中给出的文本输出:

<style amp-custom>
  amp-img > div[fallback] {
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f2f2f2;
    border: solid 1px #ccc;
  }
</style>

<amp-img src="/img/product-image.jpg" width="300" height="100" layout="responsive" class="m1">
    <div fallback>offline</div>
</amp-img>
Run Code Online (Sandbox Code Playgroud)

输出:在此输入图像描述

现在,如果你想在未找到原始图像时显示任何图像(例如无图像)而不是文本,那么为fallback div设置背景图像

<style amp-custom>    
  amp-img > div[fallback] {
     background:url('/img/does-not-exist.jpg') no-repeat;
  }
</style>

<amp-img src="/img/product-image.jpg" width="300" height="100" layout="responsive" class="m1">
    <div fallback></div>
</amp-img>
Run Code Online (Sandbox Code Playgroud)

输出:在此输入图像描述

参见官方文件: Amp Image - 离线后备