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 :
- Gibt es Hinweise, wo diese data:text/css Elemente herkommen und wie sie wirken ?
- 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 ?
- Wie kann ich das css-Element body { display: none !important; } vorrangig unwirksam machen.
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.