Functie dupa prima interactiune

Salut!
Vreau sa dau play automat la fiecare videoclip cand ajung la el

Uncaught (in promise) DOMException: play() failed because the user didn’t interact with the document first.
Din pacate utlizatorul trebuie sa interactioneze cu un click pe site, asa ca am facut asta:

window.addEventListener("click", () => {

	window.addEventListener('load', videoScroll);
	window.addEventListener('scroll', videoScroll);

	function videoScroll() {
	  if ( document.querySelectorAll('.vids').length > 0) {
		var windowHeight = window.innerHeight,
			videoEl = document.querySelectorAll('.vids');

		for (var i = 0; i < videoEl.length; i++) {

		  var thisVideoEl = videoEl[i],
			  videoHeight = thisVideoEl.clientHeight,
			  videoClientRect = thisVideoEl.getBoundingClientRect().top;

		  if ( videoClientRect <= ( (windowHeight) - (videoHeight*.5) ) && videoClientRect >= ( 0 - ( videoHeight*.5 ) ) ) {
			thisVideoEl.play();
		  } else {
			thisVideoEl.pause();
		  }

		}
	  }
	}

}, { once: true });

Alerata nu mai apare in consola si totul functioneaza pe Desktop.
Pe mobil nu functioneaza. Are cineva o solutie pentru aceasta problema?

Dacă înainte de play îl setezi pe mute nu merge?

(Apoi pe mobil e o situație deosebită, ai vrea sa intri pe un site și să-ți consume aiurea abonamentul?)

Am pus functia

window.addEventListener("click", () => { 
//aici
}, { once: true }); 

si problema e rezolvata

Dupa primul click functioneaza si nu e nevoie sa dau mute, cu touchscreen nu functioneaza
Daca as scoate window.addEventListener(“click”, () … functioneaza si cu touchscreen, doar ca primesc acea eroare in rest scriptul e functional

E duminica, sf Maria. You geeks :slight_smile:

1 Like