由于最近的更改,无法删除 youtube 标头

Cannot remove youtube masthead since recent change

我不喜欢 youtube 顶部的 "masthead"(包含搜索栏的部分),因为您无法将它滚动到屏幕之外。

我试图按照下面的方式删除它,但它不起作用。它曾经有效,但 youtube 几天前更改了他们的页面。他们当前的页面非常复杂。我尝试了不同的@run-at 可能性:document-end、document-start、document-idle。它始终显示 "bad child" 弹出窗口。

可以在 Firefox 中通过使用元素检查器和删除节点来删除它。

// ==UserScript==
// @name        YouTube
// @namespace   X
// @include     https://www.youtube.com/*
// @version     1
// @grant       none
// @run-at      document-idle
// ==/UserScript==

function rem(id) {
    var child = document.getElementById(id);
    if (!child) { alert("bad child: " + id); return; }
    var parent = child.parentElement;
    if (!parent) { alert("bad parent: " + id); return; }
    parent.removeChild(child);
}

rem("masthead-container");

您可以使用超时,重试直到成功。

if (!child) { alert("bad child: " + id); return; }

把这个^变成

if (!child) { console.log("bad child: " + id); setTimeout(rem, 3000, "masthead-container"); return; }

这可能会增加一些递归调用,但它最终会起作用。

根据两位帮助过我的人的回答,有两种解决方法:

来自萍琪派:

// ==UserScript==
// @name        YouTube
// @namespace   X
// @include     https://www.youtube.com/*
// @version     1
// @grant       none
// @run-at      document-end
// ==/UserScript==

function remove_masthead() {
    var child = document.getElementById("masthead-container");
    if (child) {
        child.parentElement.removeChild(child);
        setTimeout(scroll, 1000, 0, 80);
    }
    else
        setTimeout(remove_masthead, 1000);
}

remove_masthead();

来自 wOxxOm:

// ==UserScript==
// @name        YouTube
// @namespace   X
// @include     https://www.youtube.com/*
// @version     1
// @grant       GM_addStyle
// @run-at      document-end
// ==/UserScript==

GM_addStyle("#masthead-container.ytd-app { position: static !important; } #page-manager.ytd-app { margin-top: 0 !important; }")
setTimeout(scroll, 3000, 0, 80);