#javascript #css #greasemonkey
#javascript #css #greasemonkey
Вопрос:
У меня есть этот простой скрипт GreaseMonkey для скрытия материалов в GMail:
// ==UserScript==
// @name GMail
// @namespace Namespace
// @include https://mail.google.com/*
// @version 1
// @grant none
// ==/UserScript==
function addGlobalStyle(css) {
var head, style;
head = document.getElementsByTagName('head')[0];
if (!head) { return; }
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = css;
head.appendChild(style);
}
addGlobalStyle(".mq, .oM, .AT, .Zs { display: none; }");
Это работает нормально, но я обнаружил, что мне нужно скрыть элемент в GMail, который отображается как:
<div class="P4mo8e gsl0xd hh">
Я не уверен, как их скрыть, потому что я пытался:
addGlobalStyle(".mq, .oM, .AT, .Zs, .P4mo8e, .gsl0xd, .hh { display: none; }");
Но это не сработало, так как содержимое в этом div все еще отображается.
Любые советы будут высоко оценены.
Спасибо
Комментарии:
1. Удалите пробелы, если они должны совпадать, когда присутствуют все классы. Например.
.P4mo8e.gsl0xd.hh
Ответ №1:
Это несколько классов, а не один класс с пробелами. Это означает, что ваше определение стиля недостаточно конкретно, чтобы переопределить стили, установленные Gmail. Попробуйте что-то вроде:
addGlobalStyle(".P4mo8e.gsl0xd.hh { display: none !important; }")
Хотя это все равно не гарантирует, что будет работать, если элемент имеет встроенный стиль с !important
флагом an.
Комментарии:
1. Я использовал
!important
пользовательские скрипты в GMail, и это обычно работает. GMail сложно взломать чисто, но я не думаю, что он устанавливает стили для каких-либо элементов напрямую.
Ответ №2:
У классов нет пробелов в имени. Это способ применения более одного класса к элементу HTML. Так P4mo8e gsl0xd hh
же как и три класса, которые предположительно применяют разные стили, но они могут существовать, чтобы позволить JavaScript ссылаться на них.