uweb/searchurl/bml/content/freeviddy.js
2020-04-29 16:37:43 +08:00

54 lines
1.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Free the VIDEO elements: get rid of overlays, and enable the native controls.
*
* Useful on https://www.instagram.com/ where the stupid overlays prevent
* showing the controls and triggering the context menu, so you dont know how
* long the video will take and can't play the video in full screen mode.
*
* @title Free Viddy
*/
(function freeviddy() {
/* Recursively execute the main logic on the document and its sub-documents. */
function execute(document) {
document.addEventListener('touchmove mousemove', function debouncer(event) {
clearTimeout(debouncer.timeoutId);
debouncer.timeoutId = setTimeout(function () {
let elementsUnderPointer = document.elementsFromPoint(event.clientX, event.clientY);
let overlaysToRemove = [];
for (let i = 0; i < elementsUnderPointer.length; i++) {
if ((elementsUnderPointer[i].tagName.toUpperCase() === 'VIDEO' ||
elementsUnderPointer[i].tagName.toUpperCase() === 'IFRAME') && !elementsUnderPointer[i].xxxJanFreeViddyProcessed) {
let video = elementsUnderPointer[i];
video.controls = true;
video.xxxJanFreeViddyProcessed = true;
if (i === 0) {
} else {
overlaysToRemove = elementsUnderPointer.slice(0, i);
}
break;
}
}
if (overlaysToRemove.length) {
overlaysToRemove.forEach(element => element.remove());
}
}, 50);
});
/* Recurse for frames and iframes. */
try {
Array.from(
document.querySelectorAll('frame, iframe, object[type^="text/html"], object[type^="application/xhtml+xml"]')
).forEach(
elem => execute(elem.contentDocument)
);
} catch (e) {
/* Catch exceptions for out-of-domain access, but do not do anything with them. */
}
}
execute(document);
})();