Youtube community click post image to view full size image.
// ==UserScript==// @name:zh-CN Youtube社区点击图片查看全图// @name Youtube community post click to view full size image// @homepage https://greasyfork.org/en/scripts/452960-youtube-community-post-click-to-view-full-size-image// @namespace http://tampermonkey.net/// @version 1.21// @description:zh-CN 点击图片查看全图// @description Youtube community click post image to view full size image.// @author CZX ####erman// @match https://www.youtube.com/*// @grant GM_setValue// @grant GM_getValue// @grant GM_deleteValue// @license GPL// ==/UserScript==(function() {'use strict';// Your code here...function createObserver(){if(window.location.href.match(/^https:\/\/www.youtube.com\/channel\/.*\/community\?lb=.*$/g) != null || window.location.href.match(/^https:\/\/www.youtube.com\/post\/.*$/g) != null){let observer = new MutationObserver(function(mutations, observer) {let disconn = false;mutations.forEach(function(mutation) {mutation.addedNodes.forEach(function(node){if(node.nodeName == "DIV" && node.id == "image-container" && node.classList.contains("style-scope") && node.classList.contains("ytd-backstage-image-renderer") && node.classList.length == 2){node.addEventListener('click',()=>{let src = node.querySelector("img").getAttribute("src");let sEqindex = src.search(/[=][s][1-9]\d*/g);let sEqMatch = src.match(/[=][s][1-9]\d*/g);if(sEqMatch.length == 0){window.open(src.substring(0,src.indexOf("=")));} else {window.open(src.substring(0,sEqindex + sEqMatch[0].length));}});node.style.cursor = "pointer";disconn = true;}});});if(disconn){observer.disconnect();removeObserver();}});observer.observe(document, {childList: true,subtree: true})GM_setValue("observer", observer);}}function removeObserver(){let observer = GM_getValue("observer");if(observer != null){if(observer instanceof MutationObserver){observer.disconnect();}GM_deleteValue("observer");}}createObserver();document.addEventListener('yt-navigate-start',()=>{createObserver();});document.addEventListener('yt-navigate-start',()=>{createObserver();});window.addEventListener('beforeunload',()=>{createObserver();});})();