ЗачемМаскирует ли кнопка воспроизведения индикатором загрузки, пока он скрыт и отображается динамически с помощью механизма amp-bind при нажатии пользователем? - PullRequest
0 голосов
/ 07 октября 2018

Я пытался использовать <amp-brightcove> для показа видео в светлой бухте в AMP-версии сайта (по-прежнему WIP).Но когда я попытался переключиться между показом видео Brightcove и баннера с изображением, скрыв контейнер видео Brightcove для отображения баннера изображения, когда пользователь нажимает на плитку изображения, и наоборот, когда нажимается видео плитка.

При попытке реализовать описанное выше через объект состояния в качестве переключателя с помощью компонента <amp-bind> при загрузке страницы индикатор загрузки brightcove быстро исчезает, предоставляя пользователю доступ к элементам управления видео для воспроизведения видео.Но как только пользователь нажимает на плитку изображения, объект состояния будет установлен в значение false, тогда контейнер видео будет скрыт переключением имени класса, и контейнер изображения будет отображаться.

При этом я вижу, что Iframe внутри контейнера brightcove удален, а когда видео контейнер Brightcove настроен на отображение, iframe вводится обратно в контейнер <amp-brightcove>.Но на этот раз мешающий индикатор загрузки не сработает быстро и продолжает загружаться, даже несмотря на то, что видео готово к воспроизведению.

Я попытался избавиться от датчика загрузки на контейнере Brightcove, но не смог найти какой-либо вариантвыключите его.

Попробовал несколько способов, как показано ниже:

  1. Попытался скрыть индикатор загрузки DIV через CSS (Невозможно переопределить свойство CSS amp с помощью!важно, так как это строго запрещено AMP),
  2. Поскольку датчик загрузки был помещен абсолютно в контейнер с световой бухтой, попытался отменить значение Z-Index элемента датчика загрузки до -1, переместив элемент загрузки за видео контейнером.разрешение доступа к элементам управления видео.Теперь я могу получить доступ к элементам управления видео, даже если датчик загрузки не отключен.

Я признаю, что это взлом, Пожалуйста, дайте мне знать, если есть какой-либо официальный способ отключить датчик загрузкиэлемент светлой бухты в AMP.Вот JS Fiddle или фрагмент кода, прилагаемый ниже, иллюстрирующий проблему.

Шаги для воспроизведения:

  1. Откройте фрагмент иливозьмите его и загрузите
  2. Нажмите Скрыть видео , чтобы скрыть видео контейнер
  3. Теперь нажмите Показать видео , чтобы отобразить видео контейнер.

После выполнения описанных выше шагов мы можем увидеть индикатор загрузки, который задерживает элементы управления видео дольше, чем ожидалось.

<!--
  ## Introduction

  The `amp-brightcove` component allows embedding a Brightcove
  [Video Cloud](https://www.brightcove.com/en/online-video-platform) or
  [Perform](https://www.brightcove.com/en/perform) player.
-->
<!-- -->
<!doctype html>
<html ⚡>
<head>
  <meta charset="utf-8">
  <title>amp-brightcove</title>
  <script async src="https://cdn.ampproject.org/v0.js"></script>
  <!-- ## Setup -->
  <!-- Import the Brightcove component in the header. -->
  <script async="" custom-element="amp-bind" src="https://cdn.ampproject.org/v0/amp-bind-0.1.js"></script>
  <script async custom-element="amp-brightcove" src="https://cdn.ampproject.org/v0/amp-brightcove-0.1.js"></script>
  <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
  <link rel="canonical" href="https://ampbyexample.com/components/amp-brightcove/">
  <style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
  <style amp-custom>.showVid{display:block;}.hideVid{display:none;}</style>
</head>
<body>

  <!-- ## Basic Usage -->
  <!--
    A responsive brightcove video. The required data is `data-account` and `data-video-id`. Other
    supported parameters are `data-player-id`, `data-embed` and `data-playlist-id`.
  -->
  
  <amp-brightcove class = "showVid" [class] = "displayVid?'showVid':'hideVid'"
                  data-account="906043040001"
                  data-video-id="1401169490001"
                  data-player-id="180a5658-8be8-4f33-8eba-d562ab41b40c"
                  layout="responsive" width="480" height="270">
  </amp-brightcove>
  <button style="width:100px;height:50px;background:green" on="tap:AMP.setState({displayVid:true})">
    Show video
  </button>
  <button style="width:100px;height:50px;background:Yellow"  on="tap:AMP.setState({displayVid:false})">
    Hide video
  </button>

</body>
</html>

1 Ответ

0 голосов
/ 30 октября 2018

Наконец получается, что добавление атрибута noloading к тегу AMP отключает наложение анимации загрузки.

Пример:

...