Einzelnen Beitrag anzeigen
  #18 (permalink)  
Alt 20.10.2018, 11:59
Benutzerbild von AndreasB
AndreasB AndreasB ist offline
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 29.11.2005
Beiträge: 1.326
AndreasB wird schon bald berühmt werden
Standard

Zitat:
Zitat von basti1012 Beitrag anzeigen
Ja Greasmonkey ist halt etwas zickig. Aber hast du dran gedacht was ich zu den Zahlen sagte ?

ele=document.getElementsByClassName('spplus')[0];

Wenn im Quellcode nochmal "spplus" gibt must du die Zahlen anpassen. Am besten gibst du im Browser beim Quelltext in der Suche "spplus" an dannn werden die alle ClassNamen markiert die so heißen. Dann zählst du die bis du zu deinen Container angekommen bist denn du ausblenden willst und dann minus 1..
da du da eine 0 drnne hast ist es ja der erste ClassName auf der Seite und wie du selber weist kann das auch ein hidden Feld sein was schon ausgeblendet ist und dann siehst du auch nicht ob dein Code überhaupt funktioniert hat.
Auf welcher Seite willst du den was ausblenden dann kucke ich mal selber bei Greasmonkey (Tampermonkey ) rein ob da noch was anderes ist was mucken macht

Da es nicht nur um ein einziges auszublendendes Element geht, möchte ich eben mit dem Script alle ausblenden, auf die ein bestimmtes "Muster" trifft:


ein Element A mit Class="sspplus", mit einem Elter H1, dieses mit einem Elter DIV und dieses auch mit einem Elter DIV.


Wie in der Ausgangsfrage geschildert geht es mir um das Nachbilden eines nicht existierenden CSS-Selektors.

Angenommen es gäbe Vorfahrenselektoren, nehmen wir das Symbol Δ, dann wäre das so ein - fiktiver - CSS-Selektor:


a.ssplus Δ h2 Δ div Δ div { display: none !important }

Die Website um die es mir zur Zeit konkret geht (aber natürlich gibt es auch andere) ist spiegel.de.
Dort sollen alle Vorschauen ausgeblendet werden, die zu Artikeln hinter einer Paywall führen.



Der Originale Code lautet:


HTML-Code:
<div class="teaser" data-sponlytics-id="true" id="sponlytics-teaser-hp-3" data-sponlytics-area="slot">            <div class="clearfix">                <h2 class="article-title article-icon-big">    <a href="http://www.spiegel.de/plus/er-wollte-es-brutal-a-00000000-0002-0001-0000-000160085755" title="Ex-FBI-Agent zum Mord an Khashoggi: &quot;Er wollte es brutal&quot;" class="article-icon spplus" data-sponlytics-ec="spplus"><span class="headline-intro">Ex-FBI-Agent zum Mord an Khashoggi</span> <span class="headline">"Er wollte es brutal"</span></a></h2><div class="article-image-box box-position 230_poster_16x9 asset-align-left">        <a href="http://www.spiegel.de/plus/er-wollte-es-brutal-a-00000000-0002-0001-0000-000160085755" title="Ex-FBI-Agent zum Mord an Khashoggi: &quot;Er wollte es brutal&quot;" data-sponlytics-ec="spplus"><img src="http://cdn1.spiegel.de/images/image-1352138-230_poster_16x9-izbb-1352138.jpg" title="Ex-FBI-Agent zum Mord an Khashoggi: &quot;Er wollte es brutal&quot;" alt="Ex-FBI-Agent zum Mord an Khashoggi: &quot;Er wollte es brutal&quot;" width="230" height="129"></a><div class="asset-credit">Anadolu Agency / Abaca Press / ddp images</div>        </div><p class="article-intro">            Der ehemalige FBI-Agent Ali Soufan über Motive für den möglichen Mord an Jamal Khashoggi und die politischen Folgen. <span class="author">Von Britta Sandberg</span> <a href="http://www.spiegel.de/plus/er-wollte-es-brutal-a-00000000-0002-0001-0000-000160085755" title="Ex-FBI-Agent zum Mord an Khashoggi: &quot;Er wollte es brutal&quot;" class="more-link" data-sponlytics-ec="spplus">mehr...</a> </p>    </div>                            <ul class="article-list" data-sponlytics-area="list">        <li>                    <a href="http://www.spiegel.de/plus/der-prinz-und-der-mord-a-00000000-0002-0001-0000-000160085745" title=" SPIEGEL-Titelstory: Der Prinz und der Mord " class="article-icon spplus" data-sponlytics-ec="spplus"><span class="asset-headline-intro">SPIEGEL-Titelstory:</span> <span class="asset-headline">Der Prinz und der Mord</span></a></li>            </ul>    </div>
Die Aufgabe hat es also doch ganz schön in sich.

Vielleicht liegen die Gründe auch in den programmiertechnischen Schwierigkeiten, sonst gäbe es vielleicht längst in CSS einen Vorfahren-Selektor.

Danke schonmal dafür, dass Du Dir das ansehen möchtest.

Sollte es eine Lösung geben, wäre das jedenfalls ein sehr potentes Mittel um unerwünschtes Zeug auf Websites zu eliminieren.


Ich habe den Code Pen nochmal ergänzt um einen weiteren DIV Container, damit man so leicht prüfen kann, ob wirklich alle DIV Container durch das Script getroffen werden.


https://codepen.io/fermion/pen/LgmLMQ

Nochmal als Hinweis:
Du kannst den Code Pen einfach "forken", dann kann man sich hier mühelos über Code und seine Funktion austauschen.


Hier nochmal ein Code Pen, wo ich Deinen zuletzt geposteten Code mit der Iteration verwende:

https://codepen.io/fermion/pen/JmZNPw

Das funktioniert, da werden alle Container ausgeblendet.


Würdest Du diesen Code als am stabilsten für den beschriebenen Zweck (Nachbilden eines Vorfahren-Selektors) empfehlen?


In Greasemonkey funktioniert der Code aus diesem letzten Code Pen leider nicht.
Natürlich habe ich den Klassennamen von "kind" auf "ssplus" angepasst.

Am Rande: ich habe in Greasemonkey keine Info gefunden, wie man statt einer URL (http://www....) allein eine Domain "spiegel.de" als Bedingung angeben kann.

https://developer.chrome.com/extensions/match_patterns

Wäre
Code:
@include *spiegel.de/*
korrekt?



Die semantische Qualität des HTML SPON ist leider immer noch unterirdisch schlecht.
Denn ansonsten gäbe es weder DIV-Suppen bei SPON, keinen kilometerlangen redundanten Code und natürlich hätte jeder Vorschau-Container zu Spiegelplus das Klassenattribut "ssplus" und solche Hacks wie wir sie gerade versuchen zu entwickeln wären völlig überflüssig.

Ich reibe mir bei der absolut grottigen Qualität des Codes des SPON-CMS immer wieder verwundert die Augen.
Wer verantwortet bloß so einen Mist.
Miserabel wartbar.
__________________


Geändert von AndreasB (20.10.2018 um 12:23 Uhr)
Mit Zitat antworten