Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function mouseoverfunc(e) {
- var newnode;
- if (this.tagName == "SPAN") { // video
- if (this.children[1].style.display != "none") {
- return;
- }
- newnode = this.cloneNode(true);
- setNodeStyle(newnode);
- updateVideoChild(newnode, this);
- newnode.children[1].setAttribute('muted', true);
- newnode.children[1].muted = true;
- newnode.children[2].remove();
- // Create an overlay to prompt for spacebar press
- var soundOverlay = document.createElement("div");
- soundOverlay.style.position = "absolute";
- soundOverlay.style.top = "0";
- soundOverlay.style.left = "0";
- soundOverlay.style.width = "100%";
- soundOverlay.style.height = "100%";
- soundOverlay.style.background = "rgba(0, 0, 0, 0.5)";
- soundOverlay.style.color = "white";
- soundOverlay.style.display = "flex";
- soundOverlay.style.alignItems = "center";
- soundOverlay.style.justifyContent = "center";
- soundOverlay.style.cursor = "default";
- soundOverlay.style.zIndex = "111"; // Above video (newnode zIndex is 110)
- soundOverlay.innerText = "Press Spacebar to Enable Sound";
- // Prevent clicks on the overlay from doing anything
- soundOverlay.onclick = function(e) {
- console.log("Sound overlay clicked, ignoring");
- e.preventDefault();
- e.stopPropagation();
- };
- // Prevent clicks on the video from triggering navigation
- newnode.children[1].onclick = function(e) {
- console.log("Video element clicked, ignoring");
- e.preventDefault();
- e.stopPropagation();
- };
- // Add keydown listener for spacebar to unmute
- var keyHandler = function(e) {
- if (e.keyCode === 32) { // Spacebar
- console.log("Spacebar pressed, enabling sound");
- newnode.children[1].muted = false;
- newnode.children[1].play().catch(err => {
- console.error("Playback with sound failed:", err);
- });
- soundOverlay.remove();
- document.removeEventListener("keydown", keyHandler); // Remove listener after use
- e.preventDefault();
- e.stopPropagation();
- }
- };
- document.addEventListener("keydown", keyHandler);
- newnode.appendChild(soundOverlay);
- document.body.prepend(newnode);
- newnode.children[1].play().catch(err => {
- console.error("Autoplay failed:", err);
- });
- // Handle clicks on the newnode container (outside video/overlay)
- newnode.onclick = function(e) {
- if (e.target !== newnode.children[1] && e.target !== soundOverlay) {
- console.log("Clicked outside video/overlay, removing node");
- this.remove();
- document.removeEventListener("keydown", keyHandler); // Clean up key listener
- }
- e.preventDefault();
- e.stopPropagation();
- };
- // Clean up key listener on mouseout
- newnode.onmouseout = function(e) {
- document.removeEventListener("keydown", keyHandler);
- mouseoutfunc(e);
- };
- } else { // pictures
- if (this.lastElementChild.className && this.lastElementChild.style.display != "none") {
- return;
- }
- newnode = document.createElement("img");
- newnode.src = this.href;
- if (newnode.src != undefined && newnode.src.endsWith("imagewebp")) {
- newnode.src += ".undefined";
- }
- setNodeStyle(newnode);
- document.body.prepend(newnode);
- newnode.onclick = function(e) {
- console.log("Image clicked, removing");
- this.remove();
- e.preventDefault();
- e.stopPropagation();
- };
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment