Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 删除堆栈交换链接的下划线样式而不闪烁_Css_Google Chrome_Microsoft Edge_Userscripts_Tampermonkey - Fatal编程技术网

Css 删除堆栈交换链接的下划线样式而不闪烁

Css 删除堆栈交换链接的下划线样式而不闪烁,css,google-chrome,microsoft-edge,userscripts,tampermonkey,Css,Google Chrome,Microsoft Edge,Userscripts,Tampermonkey,作为协议的一部分,我经常访问的许多Stack Exchange站点现在都有了 我更喜欢不带下划线的外观,因为我主要使用Chrome(68.0.3440.106(官方版本)(64位))和Edge(42.17692.1004.0),它们似乎没有全局覆盖设置,所以我安装并编写了一个小的用户脚本,基于我在本网站搜索解决方案时发现的一些相关代码: /==UserScript== //@name删除堆栈交换上的链接下划线 //@名称空间http://tampermonkey.net/ //@version

作为协议的一部分,我经常访问的许多Stack Exchange站点现在都有了

我更喜欢不带下划线的外观,因为我主要使用Chrome(68.0.3440.106(官方版本)(64位))和Edge(42.17692.1004.0),它们似乎没有全局覆盖设置,所以我安装并编写了一个小的用户脚本,基于我在本网站搜索解决方案时发现的一些相关代码:

/==UserScript==
//@name删除堆栈交换上的链接下划线
//@名称空间http://tampermonkey.net/
//@version 0.1
//@description尝试接管世界!
//@author You
//@match*://*.stackexchange.com/*
//@match*://*.stackoverflow.com/*
//@match*://*.mathoverflow.com/*
//@match*://*.serverfault.com/*
//@match*://*.superuser.com/*
//@match*://*.stackapps.com/*
//@match*://*。askubuntu.com/*
//@grant none
//@在文件正文处运行
//==/UserScript==
(功能(){
"严格使用",;
//你的代码在这里。。。
var style=document.createElement(“样式”);
appendChild(document.createTextNode(“a{text装饰:无!重要;}”);
document.head.appendChild(样式);
})();
这似乎基本上工作得很好,尽管我确实注意到页面加载时在被非下划线外观取代之前,会有简短的链接下划线

我能做些什么来让我喜欢的外观更直接地显示出来,而不需要短暂的下划线吗?

我尝试了在文档开始时运行
/@run
,它删除了闪烁,但有时根本无法应用样式更改

我在这方面没有经验,除了破解第一个用户脚本,所以请解释任何提议的更改的好处和风险

我选择(并标记)Tampermonkey是为了与我选择的浏览器兼容,并使我能够在将来运行其他用户脚本(包括不限于样式更改的脚本)。

请参阅:

对于纯CSS/样式更改,更适合,并且通常优于Tampermonkey

无论如何,要避免/减少Tampermonkey的闪烁您确实需要在文档开始时运行
否则,页面将在添加样式之前基本呈现

但是,如果这种方法偶尔不起作用,则很可能是在
document.head
在这些情况下可用之前激发。(理想情况下,您会在浏览器控制台上看到一个错误

页面CSS(或其他扩展)使用
的可能性也很小!重要的或通过链接的
样式
属性应用CSS。如果脚本失败,请检查页面源(以及前面提到的浏览器控制台)

无论如何,根据链接的答案注入CSS——并消除不必要的污点——您的脚本变成:

// ==UserScript==
// @name         Stack Exchange, Remove link underlines
// @version      0.2
// @match        *://*.stackexchange.com/*
// @match        *://*.stackoverflow.com/*
// @match        *://*.mathoverflow.com/*
// @match        *://*.serverfault.com/*
// @match        *://*.superuser.com/*
// @match        *://*.stackapps.com/*
// @match        *://*.askubuntu.com/*
// @grant        GM_addStyle
// @run-at       document-start
// ==/UserScript==

GM_addStyle ( `a {text-decoration: none !important;}` );


或者,如果你被诅咒需要支持Greasemonkey 4+:

// ==UserScript==
// @name         Stack Exchange, Remove link underlines
// @version      0.2
// @match        *://*.stackexchange.com/*
// @match        *://*.stackoverflow.com/*
// @match        *://*.mathoverflow.com/*
// @match        *://*.serverfault.com/*
// @match        *://*.superuser.com/*
// @match        *://*.stackapps.com/*
// @match        *://*.askubuntu.com/*
// @grant        none
// @run-at       document-start
// ==/UserScript==

var D               = document;
var newNode         = D.createElement ('style');
newNode.textContent = "a {text-decoration: none !important;}";

var targ    = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
targ.appendChild (newNode);