2017-10-28 149 views
1

当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); 

...它并没有改变的标志色。

我在做什么错?我怎样才能改变“头”元素,使其改变签名的颜色?

+0

您需要等待DOM加载,然后才能访问它。 'document.head'很好。使用'addEventListener(“DOMContentLoaded”,function(){'...'});'或者'@ run-at document-start'。 – Xufox

+0

你写了'a || b; .c()'当你的意思是'(a || b).c()'。 –

+1

document.head不好。当我打开错误控制台时,据说document.head是空的。因此,我需要别的东西来“头”。另外,裸露在我身边。我对编码几乎一无所知。只是一些基本的东西。对于像我这样的新手来说,最简单的做法就是对脚本进行更改并重新发布。 –

回答

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。这种事情更容易,表现更好。

+0

非常感谢!新的脚本非常出色。由于某些原因,大于54的Firefox版本不再支持document.head。至少当我启动错误控制台来检查脚本问题时没有。 document.getElementsByTagName('head')[0]似乎是更好的替代品。无论如何,灰色的脚本现在是黑色的,所以它的工作原理。感谢大家! –