CSS und Adblocker
Stabi
- css
Ich verwende Firefox mit einer ganzen Reihe Extensions, unter anderem Noscript und Adblock Plus.
Mir geht es um das Verständnis des Vorgangs. Deshalb frage ich hier.
Wenn ich die folgende Seite aufrufe
http://home.arcor.de/stabil_baukasten_modelle/walther/andere/andere.html
geschieht folgendes :
Wenn ich adblock plus aktiviert habe, erscheint nur ein weißes Display.
Wenn ich adblock plus disabled habe, wird die Seite korrekt angezeigt.
Im Html-Code erkennt man einen Script-Aufruf, der von arcor.de eingefügt wurde.
<title>Walther's andere Systeme</title><noscript>
</head><!-- --><body><!-- --><script src="http://static.plista.com/home.arcor.de_v1.js" type="text/javascript"></script>
<a name="obex"></a></noscript><a name="oben"></a>
Der originale Html-Code der Seite ist
</head>
<body>
<a name="obex"></a></noscript><a name="oben"></a>
Im Script wird nach adblock plus gesucht, speziell beim Firefox. Siehe Zeilen 290 bis 292 in static.plista.com/home.arcor.de_v1.js Hier der Code in besser lesbarer Form
PLISTA.adblockdetect = function () {
var a = document.createElement('a'),
d = document.createElement('div'),
result = false,
style;
try {
d.className = 'plistaList';
a.className = 'itemLinkPET';
a.href = 'ht' + 'tp://click.plista.com/pets/abp';
a.style.display = 'block';
a.innerHTML = ' ';
d.appendChild(a);
document.body.appendChild(d);
style = window.getComputedStyle(a, null);
if (style.display === 'none') {
result = true;
} else if (style.MozBinding && style.MozBinding.match(/url\("about:(abp|sab)/)) {
result = true;
}
} catch (e) {}
if (d.parentNode) {
d.parentNode.removeChild(d);
}
return result;
};
Wenn ich die html-Datei<br/> http://home.arcor.de/stabil_baukasten_modelle/walther/andere/andere.html<br/> öffne und den Firebug(F12 key) im Firefox aktiviere and den <body> tag doppelklicke, dann werden einige Styles angezeigt, die in der Website nicht vorkommen:
body:not([id]) { cursor: auto !important; }
body { display: none !important; }
Das letzte css-Element macht die Anzeige weiß.
Der Originalcode für die beiden css-Elemente ist
data:text/css;charset=utf8,body%3Anot([id]) { cursor%3A auto !important } .__noscriptOpaqued__ { opacity%3A 1 !important%3B visibility%3A visible%3B filter%3A none !important } iframe.__noscriptOpaqued__ { display%3A block !important%3B } object.__noscriptOpaqued__%2C embed.__noscriptOpaqued__ { display%3A inline !important } .__noscriptJustOpaqued__ { opacity%3A 1 !important } .__noscriptScrolling__ { overflow%3A auto !important%3B min-width%3A 52px !important%3B min-height%3A 52px !important } .__noscriptNoScrolling__ { overflow%3A hidden !important } .__noscriptHidden__ { visibility%3A hidden !important } .__noscriptBlank__ { background-color%3A white !important%3B color%3A white !important%3B border-color%3A white !important%3B background-image%3A none !important }
und
data:text/css,.image > body{display%3A none !important%3B}%0A.teaserArea > body{display%3A none !important%3B}%0Abody{display%3A none !important%3B}
Wenn ich adblock plus disable und die Seite neu lade, fehlt das letzte css-Element im Firebug und die Seite wird korrekt dargestellt.
Nun meine Frage :
Es gibt da auch noch ein Script arcor.js, das nach meiner Meinung nicht aufgerufen wurde :
<script type="text/javascript">
(function () {
var file = "home.arcor.de_v1.js";
var host = (("http:" === document.location.protocol) ?
"http://static.plista.com/" :
"https://plista.s3.amazonaws.com/");
document.write(unescape("%3Cscript src='" + host + file +
"' type='text/javascript'%3E%3C/script%3E"));
}());
</script>
Ich danke schon jetzt im Voraus.
Hallo,
- Wie kann ich in einem Script, das in die Seite eingelinkt wird, den Aufruf von http://static.plista.com/home.arcor.de_v1.js verhindern ?
Indem du bei Arcor einen Tarif buchst, der sich nicht durch Werbung finanziert.
Gruß
Kalk
Hallo Stabi,
aber mit dem Wikiartikel ‚CSS‘ hat deine Frage rein gar nichts zu tun.
Bis demnächst
Matthias
Ich habe es hier untergebracht, weil es mir als ein Verfahren vorkommt, mit dem man CSS-Elemente einbinden kann. Ich habe im Wiki nichts zu diesem speziellen Verfahren mit data:text/css.. gefunden.
Dass das Problem selbst etwas komplexer ist, weiß ich. Mich interessiert eben, wer für das Element
body { display: none !important; }
verantwortlich ist und wie man es unwirksam macht.
Hej stabi,
Ich habe es hier untergebracht, weil es mir als ein Verfahren vorkommt, mit dem man CSS-Elemente einbinden kann. Ich habe im Wiki nichts zu diesem speziellen Verfahren mit data:text/css.. gefunden.
Dass das Problem selbst etwas komplexer ist, weiß ich. Mich interessiert eben, wer für das Element
body { display: none !important; }
verantwortlich ist und wie man es unwirksam macht.
Was ist mit
html body { display: block !important; }
Ich gebe zu: Habe keine Lust zu probieren, sollte aber gehen...
Marc
@@Matthias Apsel
aber mit dem Wikiartikel ‚CSS‘ hat deine Frage rein gar nichts zu tun.
Das Problem liegt in der „Fragen“-Funktion im Wiki, die das Betreff-Feld vorausfüllt. Fragende haben keine Veranlassung, das zu ändern; und so schwemmen desöfteren Postings mit unsinnigen Betreffs ins Forum.
Die Schuld daran liegt nicht bei den Fragenden.
LLAP 🖖
sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|
Tach!
Die Schuld daran liegt nicht bei den Fragenden.
Natürlich nicht. Man kann von niemandem verlangen, seine Fragen selbst in bestmöglicher Qualität zu verfassen, wenn er eine ebensolche Antwort erwartet. Dieses soziale Problem hat allein die Technik zu lösen.
dedlfix.
@@dedlfix
Die Schuld daran liegt nicht bei den Fragenden.
Natürlich nicht.
Wirklich nicht.
Man kann von niemandem verlangen, seine Fragen selbst in bestmöglicher Qualität zu verfassen, wenn er eine ebensolche Antwort erwartet.
Man kann von niemandem verlangen, sein Feature selbst in bestmöglicher Qualität zu implementieren, wenn er eine ebensolche Nutzung erwartet.
Dieses soziale Problem hat allein die Technik zu lösen.
Ist schlechtes interaction design und user interface design ein soziales Problem?
LLAP 🖖
sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|
Tach!
- Gibt es Hinweise, wo diese data:text/css Elemente herkommen und wie sie wirken ?
Wenn es die Entwicklertool des Browsers nicht in ihrem Inspektor anzeigen, dann hilft nur Code-Anschauen.
- Wie kann ich in einem Script, das in die Seite eingelinkt wird, den Aufruf von http://static.plista.com/home.arcor.de_v1.js verhindern ?
Hmm, wenn deins eher läuft als das andere, kannst du versuchen, das entsprechende Script-Element zu entfernen. Aber das ist vielleicht nicht im Rahmen deines Vertrags möglich. Im Browser kann man dem Adblocker auftragen, dieses Script nicht zu laden.
- Wie kann ich das css-Element body { display: none !important; } vorrangig unwirksam machen.
Dazu sind Kenntnisse der Spezifitätsregeln nötig (gibts im hiesigen Wiki nachzulesen). Du musst eine Regel definieren, die eine höhere Spezifität hat oder dieselbe und später notiert ist. Bei Inline-Style ist es schwieriger, aber nicht unmöglich. Da habe ich schon erfolgreiche Vorgehensweisen gefunden (Suchstichwörter: css override inline style).
dedlfix.
Inzwischen habe ich erfahren, dass die CSS-Elemente in den data:text/css-Texten von Plugins meines Firefox stammen. Der erste Text stammt aus Noscript, der zweite von Adblock Plus.
Im Forum von Adblock Plus konnte man einen Fehler in der Easylist finden.
Es wäre vielleicht hilfreich, die Möglichkeiten von data:text/css-Texten auch in den Selfhtml-Wikis zu erklären.
Vielen Dank für Ihre Hilfe
Hallo Stabi,
Es wäre vielleicht hilfreich, die Möglichkeiten von data:text/css-Texten auch in den Selfhtml-Wikis zu erklären.
Das Prinzip eines Wikis ist, dass jeder daran mitarbeiten kann.
Bis demnächst
Matthias
Hi,
Es wäre vielleicht hilfreich, die Möglichkeiten von data:text/css-Texten auch in den Selfhtml-Wikis zu erklären.
Gibt's im Wiki denn keine Erklärung zu data-URLs?
cu,
Andreas a/k/a MudGuard
Hallo MudGuard,
Gibt's im Wiki denn keine Erklärung zu data-URLs?
Doch. Aber scheinbar nicht gut genug quer-verlinkt.
LG,
CK