|
||||
Der Code Pen Link, den ich gepostet hatte, enthält alles zum Testen:
https://codepen.io/fermion/pen/LgmLMQ
__________________
|
Sponsored Links |
|
||||
Mit GetElementByID funktioniert "closest" übrigens:
https://codepen.io/fermion/pen/NOMaXY Edit: Wenn ich ele=ele.closest('div'); ein zweites Mal eingebe, wirkt das zweite "closest" nicht.
__________________
Geändert von AndreasB (19.10.2018 um 11:00 Uhr) |
Sponsored Links |
|
|||
"Es funktioniert nicht" stimmt nicht, es funktioniert sehr wohl.
Tipp: Man kann auch, bevor man sagt "es geht nicht", 1 Minute verwenden, die Funktion zu googlen. https://developer.mozilla.org/en-US/...lement/closest hier der erste Satz: returns the closest ancestor of the current element (or the current element itself) Macht auch sinn, weil closest div zu einem div ist man selber. Man ist sich selbst der nächste Da müsstest du .parentNode.closest('div') verwenden. Warum es mit getElementsByClassName nicht geht habe ich dir bereits in meinem ersten Post geschrieben, da brauchst du dann eine Schleife, da du mehr als ein Element zurückbekommst. da schau ich dass ich dir den code noch erweitere. |
|
||||
bei deinen Code pen machst du einfach eine [0] hinter den Class
Code:
ele=document.getElementsByClassName('kind')[0]; ele=ele.parentNode; ele=ele.parentNode; ele=ele.parentNode; ele.style.display='none'; Code:
element=document.querySelectorAll('.kind'); element.forEach((i) => { i=i.parentNode; i=i.parentNode; i=i.parentNode; i.style.display='none'; }); Hast du nur ein Container der so ausgeblendet ist reicht natürlich der erste Code. Hast du mehrer ClassName('kind') und willst das nur der 3 in der reihe ausgeblendet werden soll muss man die [0] mit einer [2] austauschen. Die Zahlen brauch man nur Bei. ClassName TagName Name bei id nicht weil id nur einmal pro Seite vor kommen darf Geändert von basti1012 (19.10.2018 um 16:02 Uhr) |
|
||||
Vielen Dank!
Der erste Code funktioniert schonmal. Den zweiten mit der Iteration muss ich noch verstehen. Dann muss ich noch rausfinden, warum das Ganze als Userscript in Greasemonkey nicht wirkt. Code:
// ==UserScript== // @name Spiegel+ ausblenden // @author Andreas // @include *spiegel.de/* // ==/UserScript== ele=document.getElementsByClassName('spplus')[0]; ele=ele.parentNode; ele=ele.parentNode; ele=ele.parentNode; ele.style.display='none'; Der originale Quelltext von spiegel.de wird in CodePen wirksam ausgeblendet. Irgendeinen Haken gibt es noch bezüglich Greasemonkey.
__________________
|
|
||||
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 Geändert von basti1012 (20.10.2018 um 11:50 Uhr) |
|
||||
Zitat:
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: "Er wollte es brutal"" 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: "Er wollte es brutal"" 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: "Er wollte es brutal"" alt="Ex-FBI-Agent zum Mord an Khashoggi: "Er wollte es brutal"" 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: "Er wollte es brutal"" 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> 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/* 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 13:23 Uhr) |
|
||||
ja schon aber
ich würde es so machen. Code:
@include http*://*spiegel.de/* Habe bei mir in Greasmonkey ein Script für das Online spiel pennergame drinne. Funktioniert gut. Doch wenn ich bei google nach einen bestimmten pennergame word suche kann es sein das die url bei Googel in Link erscheint und schon greift Greasmonkey. Du kannst höchsztens wenn du mal sowas hast mit Code:
@exclude *google.de* Zu deinen anderen Fragen kucke ich mir gleich mal bei Spiegel genauer an . Bin erst jetzt wach geworden weil wahr gestern etwas krank und kam zu nix. Melde mich heute noch aber wird etwas später |
Sponsored Links |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
jQuery: Element beim Scrollen ausblenden | DavidNF | Javascript & Ajax | 2 | 21.09.2011 10:48 |
Element ausblenden, wenn anderes eingeblendet wird | vik.alive | Javascript & Ajax | 13 | 11.05.2009 14:16 |
Liste im IE | StarSt0rm | CSS | 3 | 22.08.2007 21:04 |
element ausblenden, aber klickbar belassen | antiheld2000 | CSS | 4 | 07.05.2007 17:22 |
Element mit Javascript ein- und ausblenden | yellowfox | Javascript & Ajax | 1 | 17.08.2006 17:05 |