Как изменить класс CSS с помощью скрипта Greasemonkey/Tampermonkey?
Я пытаюсь установить фоновое изображение тела, но только там, где он использует класс banner_url
. HTML выглядит следующим образом:
<body id="app_body" class="banner_url desktopapp" data-backdrop-limit="1">
в принципе, я хотел бы заставить страницу использовать следующий CSS вместо этого:
.banner_url {
background: url('http://www.pxleyes.com/images/contests/kiwis/fullsize/sourceimage.jpg') no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
Я пытаюсь сделать это с помощью Greasemonkey, если это имеет значение. Кто-нибудь знает, как я могу это сделать? Я начал со следующего, однако не очень повезло:
function randomBG(){
document.getElementsByClassName("banner_url").style.backgroundImage="url('http://www.pxleyes.com/images/contests/kiwis/fullsize/sourceimage.jpg')no-repeat center center fixed;";
}
randomBG();
2 ответов
для этого просто используйте каскад CSS. Добавьте таблицу стилей на страницу с помощью GM_addStyle()
.
Примечание:
- мы используем
!important
флаг для покрытия некоторых потенциальных конфликтов. - использовать
@run-at document-start
(или используйте стилус, см. ниже) чтобы минимизировать "мерцание", связанное с изменением стилей после начального рендеринга.
полный скрипт:
// ==UserScript==
// @name _Override banner_url styles
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant GM_addStyle
// @run-at document-start
// ==/UserScript==
GM_addStyle ( `
.banner_url {
background: url('http://www.pxleyes.com/images/contests/kiwis/fullsize/sourceimage.jpg') no-repeat center center fixed !important;
-webkit-background-size: cover !important;
-moz-background-size: cover !important;
-o-background-size: cover !important;
background-size: cover !important;
}
` );
отметим, что если вы используете Greasemonkey 4, он перебрал GM_addStyle()
(и многое другое).
Это настоятельно рекомендуется переключиться на Tampermonkey или Violentmonkey.
Фактически, контролирующий разработчик Greasemonkey говорит сам.
в то же время, вот прокладка для тех мазохистов, которые упорствуют с GM4:
function GM_addStyle (cssStr) {
var D = document;
var newNode = D.createElement ('style');
newNode.textContent = cssStr;
var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
targ.appendChild (newNode);
}
также, для чистой манипуляции CSS, стильное расширение стилус является лучшим выбором, чем Greasemonkey / Tampermonkey.
Как насчет чего-то подобного ?
document.getElementsByClassName("banner_url")[0] .style.backgroundImage="url('http://www.pxleyes.com/images/contests/kiwis/fullsize/sourceimage.jpg')";
но я должен признать, что не уверен, что понимаю вопрос