您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
為 Youtube 登出鈕增加確認對話框,避免誤點導致帳號全部登出
当前为
- // ==UserScript==
- // @name Youtube Logout Confirm
- // @namespace http://tampermonkey.net/
- // @author Microdust
- // @version 1.0
- // @description 為 Youtube 登出鈕增加確認對話框,避免誤點導致帳號全部登出
- // @include *://*.youtube.com/*
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- const MSG = (() => {
- const userLanguage = navigator.language || navigator.userLanguage;
- switch (userLanguage) {
- case 'zh-TW':
- return '確定要登出嗎?';
- case 'zh-HK':
- return '確定要登出嗎?';
- case 'zh-CN':
- return '确定要登出吗?';
- default:
- return 'Are you sure you want to log out?';
- }
- })();
- function confirmLogout(element) {
- const parent = element.closest('a');
- if (parent && !parent.dataset.processed) {
- parent.dataset.processed = 'true';
- const clonedLink = parent.cloneNode(false);
- clonedLink.removeAttribute('href');
- clonedLink.appendChild(parent.children[0]);
- clonedLink.addEventListener('click', (event) => {
- event.preventDefault();
- if (confirm(MSG)) {
- parent.click();
- }
- });
- parent.parentElement.insertBefore(clonedLink, parent);
- parent.style.display = 'none';
- }
- }
- const observer = new MutationObserver((mutationsList) => {
- for (const mutation of mutationsList) {
- if (mutation.type === 'childList') {
- const logoutElements = Array.from(document.querySelectorAll('[id=endpoint]')).filter(el => el.href.includes('logout') && !el.closest('a').dataset.processed);
- if (logoutElements.length) {
- confirmLogout(logoutElements[0]);
- }
- }
- }
- });
- observer.observe(document.body, { childList: true, subtree: true });
- })();