在使用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"元素,以便它改变签名颜色?
答案 0 :(得分:1)
在@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会更聪明。对于这种事情来说,它更容易并且表现更好。