使用 Greasemonkey 替换 css 文件中的行

Replace line in css file, using Greasemonkey

我正在尝试编写一个 Greasemonkey 脚本来替换 .css 文件中的一行。

all.css 的原始行是

#header {
    background: transparent url('img/bg-graph-top.png?v=7e4ce14d05fb') no-repeat 50% -25px;
} 

我想用

替换它
#header {
    background: transparent url('https://upload.wikimedia.org/wikipedia/commons/0/09/Dummy_flag.png') no-repeat 50% -25px;
} 

基于我试着写我的第一个用户脚本是这样的:

// ==UserScript==
// @name            swap
// @include         http://tex.stackexchange.com/*
// @include         https://tex.stackexchange.com/*
// @require         http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
// ==/UserScript==

var desiredImage    = "https://upload.wikimedia.org/wikipedia/commons/0/09/Dummy_flag.png";

//--- Straight image swap:
$('img/bg-graph-top.png?v=7e4ce14d05fb').attr ('src', desiredImage);

/*--- Replace the link's -- with the logo as a background -- contents with just a plain image.
    Since this image is transparent, clear the old BG image.
    Also constrain the new img to its container. 
*/
$('#header all').css ('background-', 'none')
                .append ('<url>').find ('img/bg-graph-top.png?v=7e4ce14d05fb')  .attr ('src', desiredImage).css ();

但是图像没有改变:(

您正在尝试更改背景图片,而不是 <img> 标签,就像其他答案一样。

对于这样的事情,只需使用 CSS 覆盖。

这是 Greasemonkey/Tampermonkey 脚本中的样子:

// ==UserScript==
// @name        _TeX SE, Swap header background
// @match       *://tex.stackexchange.com/*
// @grant       GM_addStyle
// @run-at      document-start
// ==/UserScript==

GM_addStyle ( `
    #header {
        background: transparent url('https://upload.wikimedia.org/wikipedia/commons/0/09/Dummy_flag.png') no-repeat 50% -25px !important;
    }
` );

注意 !important 标志。

此外,如果您的脚本进行任何 DOM 操作,@run-at document-start 可能会使事情复杂化。

无论如何,对于纯粹的 CSS 更改,像这个,你最好使用 the Stylish extension 它不那么大惊小怪,性能更好