Userscript für Ausblenden von Elementen einer Site
Hallo Team,
ich bin heute auf die Möglichkeit aufmerksam geworden, mit UserScripts Veränderungen an einer lfd. html-site vornehmen zu können. Mein Browser Opera 9.64 ist dazu in der Lage. Worum es geht: Einige DIV-Elemente sollen ausgeblendet (bzw. nicht klickbar sein) werden, abhängig von einem bestimmten TextInhalt zwischen <div> und </div>.
Frage : Ist es komplex bzw ist eine Java-Einarbeitung vonnöten oder ist soetwas bereits als UserScript verfügbar?
Hat jmd Tipps ?
Danke im Vorraus für eure Hilfe.
Gruß rsadmchef
ich bin heute auf die Möglichkeit aufmerksam geworden, mit UserScripts Veränderungen an einer lfd. html-site vornehmen zu können. Mein Browser Opera 9.64 ist dazu in der Lage. Worum es geht: Einige DIV-Elemente sollen ausgeblendet (bzw. nicht klickbar sein) werden, abhängig von einem bestimmten TextInhalt zwischen <div> und </div>.
Frage : Ist es komplex bzw ist eine Java-Einarbeitung vonnöten oder ist soetwas bereits als UserScript verfügbar?
Hat jmd Tipps ?
Danke im Vorraus für eure Hilfe.
Gruß rsadmchef
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 202867
Url: https://administrator.de/contentid/202867
Ausgedruckt am: 25.11.2024 um 06:11 Uhr
12 Kommentare
Neuester Kommentar
Hi rsadmchef,
für Userscripts reicht JavaScript. Ein universell verwendbares Script für deinen Fall wirst du sehr wahrscheinlich nicht finden. Wenn du aber den entsprechenden HTML-Code hier postest oder uns einen Link zu der Seite gibst, und die Kriterien für das Ausblenden angibst kann ich dir ein entsprechendes Userscript zusammenstellen.
Grüße Uwe
für Userscripts reicht JavaScript. Ein universell verwendbares Script für deinen Fall wirst du sehr wahrscheinlich nicht finden. Wenn du aber den entsprechenden HTML-Code hier postest oder uns einen Link zu der Seite gibst, und die Kriterien für das Ausblenden angibst kann ich dir ein entsprechendes Userscript zusammenstellen.
Grüße Uwe
Wenn dein div keine ID hat kannst du folgendes Userscript für deinen Fall anpassen :
Was du anpassen musst ist die RegularExpression in Zeile 1. Wenn du dich damit nicht auskennnst poste einfach dein zu matchendes Textmuster hier, dann kriegst du's geliefert .
Was du anpassen musst ist die RegularExpression in Zeile 1. Wenn du dich damit nicht auskennnst poste einfach dein zu matchendes Textmuster hier, dann kriegst du's geliefert .
var myregexp = /^Der Inhalt des divs den du suchst$/i;
var divs = document.getElementsByTagName("div");
for (i=0;i< divs.length;i++){
if (myregexp.test(divs[i].innerHTML)) {
divs[i].style.display = "none";
}
}
OK dafür diesen Fall habe ich jetzt einen anderen Weg gewält:
Da es mit obigen Code Probleme gibt wenn die divs geschachtelt sind, nimmt dieser Code folgende vorgehensweise:
Er holt sich alle Bilder in ein Array und prüft sie auf das vorhandensein deiner URL; wenn er dieses Bild gefunden hat nimmt er den DIV-Container indem das Bild enthalten ist und blendet ihn aus.
Grüße Uwe
Da es mit obigen Code Probleme gibt wenn die divs geschachtelt sind, nimmt dieser Code folgende vorgehensweise:
Er holt sich alle Bilder in ein Array und prüft sie auf das vorhandensein deiner URL; wenn er dieses Bild gefunden hat nimmt er den DIV-Container indem das Bild enthalten ist und blendet ihn aus.
var regex = /^http:\/\/www\.domain\.de\/images\/[Hh]elden.gif$/i;
var imgTags = document.getElementsByTagName("img");
for (x=0;x<imgTags.length;x++){
if (regex.test(imgTags[x].src)){
var parentDiv = imgTags[x].parentNode;
parentDiv.style.display = "none";
}
}
Grüße Uwe
Nein du kannst das alles in ein Regex packen mit jeweils einem "|" (dies bedeutet "oder") voneinander getrennt:
oder die Kurzform wenn die Domain-Pfade gleich bleiben:
Grüße Uwe
var regex = /^http:\/\/www\.domain\.de\/images\/[Hh]elden.gif$|^http:\/\/www\.domain\.de\/images\/[Tt]ypen.gif$|^http:\/\/www\.domain\.de\/images\/[Mm]eister.gif$/i;
oder die Kurzform wenn die Domain-Pfade gleich bleiben:
var regex = /^http:\/\/www\.domain\.de\/images\/([Hh]elden\.gif|[Tt]ypen\.gif|[Mm]eister\.gif)$/i;
Grüße Uwe
ich empfehle Dir etwas Regular Expressions zu lernen. Such
mal in Google. Dann wirst du rausfinden was das ^ am Anfang des Regex und das $ am Ende bedeuten.
^ ---> kennzeichnet den Anfang des Strings
$ ---> kennzeichnet das Ende des Strings
d.h. bei deinem Regex würde nur folgendes DIV-Tag gematcht:
es dürfte also nichts weiter als das Wort "Lederhose" drin stehen, wegen den Kennzeichnern für den Anfang und das Ende des Strings.
Was du willst kannst du so schreiben:
oder
der Punkt bedeutet es wird alles gematcht und das Sternchen bedeutet das das vorangegangene Zeichen 0 oder mehrmal vorkommen kann.
Das Problem mit dem ersten Code kommt dann zum tragen wenn mehrere Divs geschachtelt sind. Dann wird nämlich der erste DIV in dem er das Wort "Lederhose" findet schon ausgeblendet; das könnte im schlimmsten Fall der erste DIV der HTML-Seite sein und dann wird natürlich fast alles ausgeblendet.
Dies kannst du umgehen indem du die DIV's bis zum Ziel-DIV zählst und dann diesen per Index (x) ausblendest:
oder mehr individuell vorhandenen Code am Anfang des Divs matchst:
mal in Google. Dann wirst du rausfinden was das ^ am Anfang des Regex und das $ am Ende bedeuten.
^ ---> kennzeichnet den Anfang des Strings
$ ---> kennzeichnet das Ende des Strings
d.h. bei deinem Regex würde nur folgendes DIV-Tag gematcht:
<DIV>Lederhose</DIV>
Was du willst kannst du so schreiben:
var Regex = /Lederhose/i;
oder
var Regex = /.*Lederhose.*/i;
der Punkt bedeutet es wird alles gematcht und das Sternchen bedeutet das das vorangegangene Zeichen 0 oder mehrmal vorkommen kann.
Das Problem mit dem ersten Code kommt dann zum tragen wenn mehrere Divs geschachtelt sind. Dann wird nämlich der erste DIV in dem er das Wort "Lederhose" findet schon ausgeblendet; das könnte im schlimmsten Fall der erste DIV der HTML-Seite sein und dann wird natürlich fast alles ausgeblendet.
Dies kannst du umgehen indem du die DIV's bis zum Ziel-DIV zählst und dann diesen per Index (x) ausblendest:
divs[x].style.display = "none";
var Regex = /^<table border="0" width="450">.*Lederhose.*/i;
Hallo Uwe
Ich weiss, dieser Beitrag ist schon etwas älter, aber genau das was ich brauche.
Ich habe eine Seite, auf der auch Werbung eingebunden ist. Das ganze habe ich ebenfalls als Premium eingerichtet. Das heisst dort soll kein Werbung erscheinen. www.meine Seite (Werbung) www.meineSeite/premium (ohne Werbung)
Da ich für die Informationsseiten und Contact usw. immer das gleiche PHP verwende um doppelten Content bei Google zu vermeiden, benötige ich ein Verfahren um auf die premium-domain die Werbung auszublenden.
Die Werbung ist so eingebunden:
Kannst du mir dabei helfen?
Danke und Gruss
Mauro
Ich weiss, dieser Beitrag ist schon etwas älter, aber genau das was ich brauche.
Ich habe eine Seite, auf der auch Werbung eingebunden ist. Das ganze habe ich ebenfalls als Premium eingerichtet. Das heisst dort soll kein Werbung erscheinen. www.meine Seite (Werbung) www.meineSeite/premium (ohne Werbung)
Da ich für die Informationsseiten und Contact usw. immer das gleiche PHP verwende um doppelten Content bei Google zu vermeiden, benötige ich ein Verfahren um auf die premium-domain die Werbung auszublenden.
Die Werbung ist so eingebunden:
<center><script type="text/javascript">
var uri = 'http://impch.xxxx.com/imp?type(iframe)pool(xxxx)a(xxxx)' + new String (Math.random()).substring (2, 11);
document.write('<iframe src="'+uri +'" width="468" height="60" style="margin: 0px 0px; border: 1px solid black;" frameborder="0" border="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>');
</script></center>
Kannst du mir dabei helfen?
Danke und Gruss
Mauro
Hallo Mauro, Wilkommen bei Administrator.de!
Das Thema oben ist aber ein ganz anderes, denn hier geht es um ein Userscript für die Verwendung auf Client-Seite im Browser (z.B. in Firefox mit Greasemonkey). Mit PHP steht dir doch das ganze Arsenal an Funktionen zur Verfügung um auf bestimmten Seiten eben den Werbeblock anzuzeigen, oder eben nicht. Ansonsten lässt sich Content auch mit jQuery und JavaScript ausblenden.
Grüße Uwe
Das Thema oben ist aber ein ganz anderes, denn hier geht es um ein Userscript für die Verwendung auf Client-Seite im Browser (z.B. in Firefox mit Greasemonkey). Mit PHP steht dir doch das ganze Arsenal an Funktionen zur Verfügung um auf bestimmten Seiten eben den Werbeblock anzuzeigen, oder eben nicht. Ansonsten lässt sich Content auch mit jQuery und JavaScript ausblenden.
Grüße Uwe
Also zuerst solltest du den Werbeteil eindeutig kennzeichen, z.B. mit einem umschließenden DIV mit ID oder Klassennamen, damit auf dies entsprechend einfacher zugegriffen werden kann. Im Beispiel nehmen wir mal ein DIV mit dem Klassennamen werbung:
Das machst du mit allen Werbebannern.
Dann baust du auf deiner Premium-Seite folgendes Java-Script-Snippet ein, welches beim Laden der Seite alle DIVs mit der Klasse werbung ausblendet:
Wie gesagt das ist eine Java-Script-Lösung. Cleaner wäre es wenn du das schon im Aufbau deiner Seiten mit PHP integrieren würdest damit der Werbe-Code erst gar nicht geladen wird, dazu fehlt mir aber die Info wie deine Seiten aufgebaut sind.
Alles weitere bitte via PM damit wir hier das Thema des Threads nicht verlassen. Merci.
Grüße Uwe
<div class="werbung"> ....hier kommt deine Werbung rein ....</div>
Dann baust du auf deiner Premium-Seite folgendes Java-Script-Snippet ein, welches beim Laden der Seite alle DIVs mit der Klasse werbung ausblendet:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(e) {
$("div.werbung").hide();
// oder alternativ komplett aus dem DOM ausblenden
// $("div.werbung").css("display","none");
});
</script>
Alles weitere bitte via PM damit wir hier das Thema des Threads nicht verlassen. Merci.
Grüße Uwe