我的“头”在哪里?
Where's my `head` at?
在 GameFAQS 上浏览时,我的一个 Greasemonkey 脚本与 Firefox 56 版崩溃了。这是一个非常简单的脚本:
// ==UserScript==
// @name MakeSignaturesBlack
// @namespace tarelessar
// @description Makes the signatures black again
// @include https://*.gamefaqs.com/*
// @version 1
// @grant none
// @run-at document-start
// ==/UserScript==
//Makes signatures black I guess
var sheet = document.createElement ('style')
sheet.innerHTML = ".signature {color: inherit !important}";
document.head.appendChild(sheet);
编写此脚本是为了将网站上的灰色签名栏更改为黑色,并且一直适用于 Firefox 54 版本。之后,它停止了 56 版的工作。
当我解决它时,我发现 document.head
是空的。 通过一些研究,我发现 document.getElementsByTagName("head")[0];
应该被使用并且尝试过:
// ==UserScript==
// @name MakeSignaturesBlack
// @namespace tarelessar
// @description Makes the signatures black again
// @include https://*.gamefaqs.com/*
// @version 1
// @grant none
// @run-at document-start
// ==/UserScript==
//Makes signatures black I guess
var sheet = document.createElement ('style')
sheet.innerHTML = ".signature {color: inherit !important}";
document.head || document.getElementsByTagName("head")[0];.appendChild(sheet);
...它没有改变签名颜色。
我做错了什么?我如何更改 "head" 元素以更改签名颜色?
在 @run-at document-start
模式下,Greasemonkey 脚本确实可以在 document.head
可用之前触发。在这种情况下,退回到 documentElement
.
这样的代码最好:
let D = document;
let sheet = D.createElement ('style')
sheet.innerHTML = ".signature {color: inherit !important}";
let targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
targ.appendChild (sheet);
但是,如果您只是通过注入 CSS 来改变外观,那么使用 the Stylish extension 会更聪明。对于这种事情,它更容易并且表现更好。
在 GameFAQS 上浏览时,我的一个 Greasemonkey 脚本与 Firefox 56 版崩溃了。这是一个非常简单的脚本:
// ==UserScript==
// @name MakeSignaturesBlack
// @namespace tarelessar
// @description Makes the signatures black again
// @include https://*.gamefaqs.com/*
// @version 1
// @grant none
// @run-at document-start
// ==/UserScript==
//Makes signatures black I guess
var sheet = document.createElement ('style')
sheet.innerHTML = ".signature {color: inherit !important}";
document.head.appendChild(sheet);
编写此脚本是为了将网站上的灰色签名栏更改为黑色,并且一直适用于 Firefox 54 版本。之后,它停止了 56 版的工作。
当我解决它时,我发现 document.head
是空的。 通过一些研究,我发现 document.getElementsByTagName("head")[0];
应该被使用并且尝试过:
// ==UserScript==
// @name MakeSignaturesBlack
// @namespace tarelessar
// @description Makes the signatures black again
// @include https://*.gamefaqs.com/*
// @version 1
// @grant none
// @run-at document-start
// ==/UserScript==
//Makes signatures black I guess
var sheet = document.createElement ('style')
sheet.innerHTML = ".signature {color: inherit !important}";
document.head || document.getElementsByTagName("head")[0];.appendChild(sheet);
...它没有改变签名颜色。
我做错了什么?我如何更改 "head" 元素以更改签名颜色?
在 @run-at document-start
模式下,Greasemonkey 脚本确实可以在 document.head
可用之前触发。在这种情况下,退回到 documentElement
.
这样的代码最好:
let D = document;
let sheet = D.createElement ('style')
sheet.innerHTML = ".signature {color: inherit !important}";
let targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
targ.appendChild (sheet);
但是,如果您只是通过注入 CSS 来改变外观,那么使用 the Stylish extension 会更聪明。对于这种事情,它更容易并且表现更好。