Youtube Logo - Link to subscriptions feed

Change YouTube logo link to user's subscription feed instead of homepage (only when logged in)

当前为 2017-11-19 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name            Youtube Logo - Link to subscriptions feed
// @namespace       Youtube Logo - Link to subscriptions feed
// @description     Change YouTube logo link to user's subscription feed instead of homepage (only when logged in)
// @version         1.1.4
// @include         /http|https://.*youtube\..*/
// @supportURL      https://greasyfork.org/en/scripts/13582/feedback
// @author          aciid
// ==/UserScript==

//  console.info("Running Youtube Logo - Link to subscriptions feed");

function checkLogoLoaded(){
    var loopCount = 1;
    var loopInterval = setInterval(function(){
    var LogoElement = document.getElementById("logo").getElementsByTagName('a')[0];
    var UserLoggedIn = document.getElementById("end").getElementsByTagName("ytd-notification-topbar-button-renderer") != null;
    //console.info("Searching for logo - Loop: " + loopCount + " LogoElement: " + (LogoElement != null) + " UserLoggedIn: " + UserLoggedIn);
             
    if((LogoElement != null && UserLoggedIn) || loopCount >= 10){                                                                                                    // Loop to wait up to 60 seconds for YouTube logo
        LogoElement.href = "/feed/subscriptions";
        LogoElement.addEventListener("click", function(){window.location.href = "/feed/subscriptions";});                        // Force page redirection
        clearInterval(loopInterval);                                                                                                                                                                // Stop loop
    }
    loopCount++;
    }, 500);                                                                                                                                                                                                                // Loop with 500ms sleep
}

function runScriptOldLogo() {
    LogoElement.getElementsByTagName('area')[0].href = "/feed/subscriptions";                                                                       // Update special event logo URL        
    if (document.getElementById("yt-masthead-user") != null
        || document.getElementById("end").getElementsByTagName("ytd-notification-topbar-button-renderer") != null) {// Check user is logged in (old design)
           var LogoElement = document.getElementById("logo-container");                                                                                // Get logo element
           LogoElement.href = "/feed/subscriptions";                                                                                                   // Update logo element URL
    } 
}

//document.addEventListener("DOMContentLoaded", checkLogoLoaded);
//window.addEventListener("load", checkLogoLoaded);
//document.getElementsByTagName("body")[0].addEventListener("yt-navigate-start", checkLogoLoaded);
//document.addEventListener('readystatechange', runScript);                                                        

document.getElementsByTagName("body")[0].addEventListener("yt-navigate-finish", checkLogoLoaded);                                     // new youtube design
window.addEventListener("spfdone", runScriptOldLogo);                                                                                                                             // old youtube design
window.onload = setTimeout(function(){checkLogoLoaded(),runScriptOldLogo();}, 1);                                                                        // Execute script after page load