🏠 Home 

Youtube community post click to view full size image

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();
});
})();