Вход

Просмотр полной версии : Добавить cookie к play/pause фонового видео


noid
10.08.2019, 19:01
Доброго времени суток. Не могу разобраться с cookie, да и не хочу особо вникать. Мне просто нужен рабочий код, донатик за рабочее решение скину. Код:

$('.video-control').on('click', function () {
$(this).toggleClass('video-control_active');
var currentVideo = document.querySelector('.play');
if (currentVideo.paused) {
currentVideo.play();
} else {
currentVideo.pause()
}
})

Нужно, чтоб запоминал вкл/выкл после перезагрузки страницы. Jquery подключена. Заранее благодарен :)

рони
10.08.2019, 19:20
noid,

$(function() {
var currentVideo = document.querySelector('.play');
var paused = 'paused' in localStorage;
if(paused == 'false') {
currentVideo.play();
$('.video-control').addClass('video-control_active');
}
$('.video-control').on('click', function () {
$(this).toggleClass('video-control_active');
if (currentVideo.paused) {
currentVideo.play();
localStorage.paused = 'false'
} else {
currentVideo.pause();
localStorage.paused = 'true'
}
})
});

noid
11.08.2019, 19:04
noid,

$(function() {
var currentVideo = document.querySelector('.play');
var paused = 'paused' in localStorage;
if(paused == 'false') {
currentVideo.play();
$('.video-control').addClass('video-control_active');
}
$('.video-control').on('click', function () {
$(this).toggleClass('video-control_active');
if (currentVideo.paused) {
currentVideo.play();
localStorage.paused = 'false'
} else {
currentVideo.pause();
localStorage.paused = 'true'
}
})
});

Спасибо, в локалсторадж пишет. Я должен был сразу весь код выложить, мой бок. После перезагрузки страницы видео запускается, даже при сохраненном TRUE в сторадже. Видимо очередность видео мешает. Скинул весь js-ник в личку

рони
11.08.2019, 20:41
noid,
playlist();

$(function() {
var currentVideo = document.querySelector('.play');
var paused = 'paused' in localStorage;
if(paused == 'false') {
currentVideo.play();
$('.video-control').addClass('video-control_active');
}
$('.video-control').on('click', function () {
$(this).toggleClass('video-control_active');
if (currentVideo.paused) {
currentVideo.play();
localStorage.paused = 'false'
} else {
currentVideo.pause();
localStorage.paused = 'true'
}
})
});

заменить на
if(localStorage.paused !== 'true') playlist();
$('.video-control').on('click', function () {
$(this).toggleClass('video-control_active');
var currentVideo = document.querySelector('.play');
if (currentVideo && currentVideo.paused) {
currentVideo.play();
localStorage.paused = 'false'
} else {
currentVideo.pause();
localStorage.paused = 'true'
}
})

noid
11.08.2019, 22:49
noid,
... заменить на
if(localStorage.paused !== 'true') playlist();
$('.video-control').on('click', function () {
$(this).toggleClass('video-control_active');
if (currentVideo.paused) {
currentVideo.play();
localStorage.paused = 'false'
} else {
currentVideo.pause();
localStorage.paused = 'true'
}
})
Так перестало останавливаться видео и ничего не пишется в сторадж, но класс 'video-control_active' тоглится. Попробовал так:
if(localStorage.paused !== 'true') playlist();

$(function() {
var currentVideo = document.querySelector('.play');
var paused = 'paused' in localStorage;
if(paused == 'false') {
currentVideo.play();
$('.video-control').addClass('video-control_active');
}
$('.video-control').on('click', function () {
$(this).toggleClass('video-control_active');
if (currentVideo.paused) {
currentVideo.play();
localStorage.paused = 'false'
} else {
currentVideo.pause();
localStorage.paused = 'true'
}
})
});

В сторадж пишется и видео реагирует на кнопку. Перезагружаю страницу из состояния:

1. Видео на паузе, сторадж=true -> в итоге видео висит на паузе и не реагирует на кнопку play. И сторадж не обновляется.

2. Перезагружаю, когда видео проигрывается и сторадж=false -> и видео и сторадж работают как надо

рони
11.08.2019, 23:39
noid,
пробуйте, заменить на
if(localStorage.paused !== 'true') playlist();
else {
videos[currPlayVideo].classList.add('play');
videos[currPlayVideo].onended = function () {
playNextVideo();
};
$('.video-control').remove('video-control_active');
};
$('.video-control').on('click', function () {
var currentVideo = document.querySelector('.play');
$(this).toggleClass('video-control_active');
if (currentVideo.paused) {
currentVideo.play();
localStorage.paused = 'false'
} else {
currentVideo.pause();
localStorage.paused = 'true'
}
})

noid
12.08.2019, 13:52
noid,
пробуйте, заменить на
if(localStorage.paused !== 'true') playlist();
else {
videos[currPlayVideo].classList.add('play');
videos[currPlayVideo].onended = function () {
playNextVideo();
};
$('.video-control').remove('video-control_active');
};
$('.video-control').on('click', function () {
var currentVideo = document.querySelector('.play');
$(this).toggleClass('video-control_active');
if (currentVideo.paused) {
currentVideo.play();
localStorage.paused = 'false'
} else {
currentVideo.pause();
localStorage.paused = 'true'
}
})

Отлично! Все работает, за исключением состояния (внешнего вида) кнопки. Подскажите пожалуйста, как добавить проверку - если localStorage.paused == true -> тогда addClass('video-control_active') при загрузке страницы?

рони
12.08.2019, 14:13
noid,
так может строка 7 ненужна?

noid
12.08.2019, 14:26
noid,
так может строка 7 ненужна?
По верстке нужна, но я уже вроде нашел решение. Добавил кусок, теперь как надо:
if (localStorage.getItem("paused") == "true") {
getFav = localStorage.paused;
$(".video-control").addClass('video-control_active');
}

Спасибо Вам за помощь!