使用Greasemonkey替换css文件中的行

时间:2017-12-08 11:51:46

标签: css greasemonkey userscripts tampermonkey

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

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;
} 

基于https://stackoverflow.com/a/6854437/9072294,我尝试写下我的第一个用户脚本:

// ==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 ();

然而,图像没有变化:(

1 个答案:

答案 0 :(得分:1)

您正在尝试更改背景图片,而不是// ==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; } ` ); 标签,就像其他答案一样。

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

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

!important

请注意@run-at document-start标记。

此外,如果您的脚本执行任何DOM操作,package application; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.scene.layout.AnchorPane; import javafx.stage.Stage; public class player extends Application { public static void main(String args[]) { Application.launch(args); } @Override public void start(Stage stage) throws Exception { FXMLLoader loader = new FXMLLoader (getClass().getResource("thread1.fxml")); AnchorPane root = loader.load(); stage.setScene(new Scene(root,800,600)); stage.show(); } } 可能会使事情变得复杂。

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