因为最近的更改,无法删除youtube标头

时间:2017-09-04 23:55:03

标签: firefox greasemonkey ubuntu-16.04

我不喜欢youtube顶部的“标头”(包含搜索栏的部分),因为你无法将其从屏幕上滚动。

我试图将其删除,如下所示,但它不起作用。它曾经工作,但youtube几天前改变了他们的页面。他们目前的页面非常复杂。我尝试过不同的@ run-at可能性:document-end,document-start,document-idle。它总是显示“坏孩子”弹出窗口。

可以使用元素检查器并删除节点在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");

2 个答案:

答案 0 :(得分:0)

你可以使用超时,重试它直到它工作。

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

将此^变为

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

这可能会增加一些递归调用,但最终会有效。

答案 1 :(得分:0)

根据帮助我的两个人的答案,这里有两个解决方案:

来自Pinkie Pie:

// ==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);