Pause Youtube video on start.
当前为
// ==UserScript==
// @name Youtube Pause On Start
// @namespace http://tampermonkey.net/
// @version 2024-02-15
// @description Pause Youtube video on start.
// @author Santeri Hetekivi
// @match *://*.youtube.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=youtube.com
// @grant none
// ==/UserScript==
(function () {
'use strict';
/**
* Get element with selector and call callback with it.
* @param {string} selector Selector for the element.
* @param {function} callback Callback function to call with the element.
*/
function forElement(selector, callback) {
// Init forElement.timeoutCount.
if (forElement.timeoutCount === undefined) {
forElement.timeoutCount = {}
}
// Init forElement.timeoutCount[selector].
if (forElement.timeoutCount[selector] === undefined) {
forElement.timeoutCount[selector] = 0
}
// Get element.
const element = document.querySelector(selector)
// If element not found.
if (element === null) {
// try again after timeout.
setTimeout(
function () {
forElement(selector, callback)
},
(
// Base timeout.
100
*
// Increase timeout after each try.
(forElement.timeoutCount[selector]++)
)
)
}
// If element found
else {
// reset timeout count
forElement.timeoutCount[selector] = 0
// and call callback with element.
callback(element)
}
}
// Init previous video id.
let videoIdPrevious = null;
/**
* Run on url change.
*/
function onUrlChange() {
// Get video id from url.
const videoId = (new URLSearchParams(window.location.search)).get("v");
// If
if (
// did not get video id
videoId === null
||
// or video id did not change
videoId === videoIdPrevious
) {
// just return.
return
}
// Update previous video id.
videoIdPrevious = videoId;
// Run for
forElement(
// video element that has src attribute
"video[src]",
function (video) {
// Init paused video ID.
let pausedVideoId = null
// Add event listener to video element
video.addEventListener(
// for playing event
"playing",
function () {
// Get current video ID from URL.
const videoId = (new URLSearchParams(window.location.search)).get("v")
// If video id is different than last paused video
if (pausedVideoId !== videoId) {
// pause video
video.pause()
// and update paused video ID.
pausedVideoId = videoId
}
}
)
}
)
}
// Add event listener for
window.addEventListener(
// Youtube page data updated event.
'yt-page-data-updated',
function () {
onUrlChange();
}
);
// Run on url change once on first load.
onUrlChange();
})();