Vimeo-обещания
Похоже, что если вы используете Vimeo API, вы должны вернуть Promise. Если вы просто хотите выполнить простую задачу, такую как управление громкостью, в документации приведен этот пример:
player.setVolume(0.5).then(function(volume) {
// volume was set
}).catch(function(error) {
switch (error.name) {
case 'RangeError':
// the volume was less than 0 or greater than 1
break;
default:
// some other error occurred
break;
}
});
Не просто, и это перебор. Глядя на него, это не очевидно, но если вы видите then()
, await
async
, new Promise
, вы можете с уверенностью 99,9% сказать, что обещание будет возвращено. Я недостаточно внимательно изучил player.js, но я думаю, что каждый метод упакован в промисе, насколько я могу судить, мы можем просто вернуть метод, не используя всю эту лишнюю хрень. Итак, сравните приведенный выше код со следующим:
var sVol = player.setVolume(1); return sVol;
Поэтому я считаю, что при вызове метода Vimeo API мы можем вернуть функцию как значение. Нет работы, связанной с тем, что именно представляет собой это значение, потому что оно будет либо разрешено, либо отклонено. Обещание также неизменяемо, поэтому возврат самой функции должен быть гарантированным решением (в отношении методов Vimeo, а не обещаний в целом).
Макет наложения
Вместо того, чтобы щелкать iframe, заполненный видеоплеером, который будет выполнять 100 других задач, кроме вашего пользовательского обратного вызова, вам нужно щелкнуть элемент за пределами iframe. В качестве фонового видео без элементов управления вы очень ограничены. Я предлагаю элемент, который закрывает проигрыватель iframe от края до края, чтобы пользователь щелкал его и ничего больше. Ниже приведены шаги для настройки наложения:
Поместите проигрыватель iframe (#vFrame0
в демо) в родительский контейнер relpos???? (он же .box
).
Поместите более старый родственный элемент???? abspos???? (также известный как .overlay
) внутри родителя с помощью проигрывателя iframe.
Установите старшего брата выше проигрывателя, установив его z-index
в l больше, чем проигрыватель iframe, и необходимые свойства CSS (см. демо CSS для .overlay
), чтобы убедиться, что старший брат полностью закрывает проигрыватель iframe от края до края.
Зарегистрируйте событие щелчка в элементе наложения, чтобы, когда игрок игнорирует событие щелчка, событие возвращалось к более старому элементу наложения того же уровня. Элемент overlay теперь является своего рода прокси и будет запускать обратный вызов:
var sVol = player.setVolume(1); return sVol
Демо
Эта демонстрация не работает из-за конфликта между подключениями Vimeo и мерами безопасности SO. Чтобы ознакомиться с работающей демонстрацией, просмотрите этот Plunker или этот Планкер.
<!DOCTYPE html>
<html>
<head>
<base href="https://player.vimeo.com/api/demo">
<meta charset='utf-8'>
<style>
.box {
display: table;
border: 3px dashed red;
position: relative;
}
.overlay {
cursor: pointer;
display: table-cell;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
min-height: 100%;
z-index: 1;
}
.overlay::before {
position: absolute;
cursor: pointer;
display: block;
content: '????';
font-size: 2em;
width: 2em;
height: 2em;
color: cyan;
opacity: 0;
transition: opacity .5s ease 3s;
}
.overlay:hover::before {
opacity: 1;
transition: .5s ease;
}
.mute.overlay::before {
content: '????';
}
</style>
</head>
<body>
<figure class='box'>
<figcaption class='overlay mute'></figcaption>
<div id='vFrame0' data-vimeo-id="76979871" data-vimeo-autoplay data-vimeo-background></div>
</figure>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src='https://player.vimeo.com/api/player.js'></script>
<script>
var player = new Vimeo.Player('vFrame0', options);
var options = {
mute: true
};
$('.overlay').on('click', function(e) {
var state = $(this).hasClass('mute') ? player.setVolume(1) : player.setVolume(0);
$(this).toggleClass('mute');
return state;
});
</script>
</body>
</html>
????отношения: position: relative
| абстракции position: absolute
????старший родственный элемент элемент, расположенный перед элементом, на который делается ссылка.
person
zer00ne
schedule
27.06.2018