Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Userscript für Ausblenden von Elementen einer Site

Frage Entwicklung JavaScript

Mitglied: rsadmchef

rsadmchef (Level 1) - Jetzt verbinden

06.03.2013 um 10:01 Uhr, 3426 Aufrufe, 12 Kommentare

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


Mitglied: colinardo
06.03.2013 um 11:52 Uhr
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
Bitte warten ..
Mitglied: colinardo
06.03.2013, aktualisiert um 12:24 Uhr
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 .
01.
var myregexp = /^Der Inhalt des divs den du suchst$/i; 
02.
var divs = document.getElementsByTagName("div"); 
03.
 
04.
for (i=0;i< divs.length;i++){ 
05.
   if (myregexp.test(divs[i].innerHTML)) { 
06.
	divs[i].style.display = "none"; 
07.
08.
}
Bitte warten ..
Mitglied: rsadmchef
06.03.2013 um 15:54 Uhr
Hallo colinardo

es geht um den Text "Helden.gif"

Auszug
<div>
...
<img src="http://www.domain.de/images/Helden.gif"
...
</div>

wobei Helden auch kleingeschrieben sein kann.

vlt so:
var myregexp = /^[Hh]elden.gif$/i;
oder so:
var myregexp = /^http://www.domain.de/images/[Hh]elden.gif$/i; ??

Gruß rsadmchef
Bitte warten ..
Mitglied: colinardo
06.03.2013, aktualisiert um 17:13 Uhr
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.
01.
var regex = /^http:\/\/www\.domain\.de\/images\/[Hh]elden.gif$/i; 
02.
var imgTags = document.getElementsByTagName("img"); 
03.
for (x=0;x<imgTags.length;x++){ 
04.
   if (regex.test(imgTags[x].src)){ 
05.
	var parentDiv = imgTags[x].parentNode; 
06.
	parentDiv.style.display = "none"; 
07.
08.
}
Grüße Uwe
Bitte warten ..
Mitglied: rsadmchef
07.03.2013 um 09:45 Uhr
Prima colinardo, hat funktioniert. Die Helden-Links sind nicht dargestellt.
Kann die Variable "regex" so erweitert werden, daß auch verschiedene Hyper-Links im gleichen Script abgeschaltet werden können oder muß dann für jedes einzelne regex ein extra userscript erzeugt werden ?

regex = /^http:\/\/www\.domain\.de\/images\/[Hh]elden.gif$/i;
regex0 = /^http:\/\/www\.domain\.de\/images\/[Ty]ypen.gif$/i;
regex1 = /^http:\/\/www\.domain\.de\/images\/[Mm]eister.gif$/i;

alles verschiedene Gifs.
mfg rsadmchef
Bitte warten ..
Mitglied: colinardo
07.03.2013, aktualisiert um 13:23 Uhr
Nein du kannst das alles in ein Regex packen mit jeweils einem "|" (dies bedeutet "oder") voneinander getrennt:
01.
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:
01.
var regex = /^http:\/\/www\.domain\.de\/images\/([Hh]elden\.gif|[Tt]ypen\.gif|[Mm]eister\.gif)$/i;
Grüße Uwe
Bitte warten ..
Mitglied: rsadmchef
09.03.2013 um 20:02 Uhr
Alles prima.
Ich komme nochmal auf Dein 1. Script zurück.
Im div-Block der Site ist der Begriff "Lederhose" vorhanden, vor einem a href tag.

var myregexp = /^Lederhose$/i;

Der Link "Nochmal" ist nach wie vor klickbar.
Was ist falsch?

Der Div Block:

<div align="center" onclick="this.style.display = 'none'">
<table border="0" width="450">
<tr>
<td><table border="1" width="450" bgcolor="#F0E2C1">
<tr>
<td><center><font size="2" face="Verdana" color="#000000"><br>MessageID 16</font></center></td>
</tr>
<tr>
<td valign="top"><center><font face="Verdana" color="#000000" size="2">Lederhose</font></center></td>
<tr><td height="35" align="center">
<a href="richtig.php" target="_blank" style="text-decoration: none"><font face="Verdana" color="#000000" size="2">Nochmal</font></a></td></tr><tr><td>
<center><font face="Verdana" color="#000000" size="2">Kein Bedarf</font></center></td></tr></table><br><br></td></tr></table></div>

mfG rsadmchef
Bitte warten ..
Mitglied: colinardo
09.03.2013, aktualisiert um 21:42 Uhr
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:
 <DIV>Lederhose</DIV>
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:
 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";
oder mehr individuell vorhandenen Code am Anfang des Divs matchst:
 var Regex = /^<table border="0" width="450">.*Lederhose.*/i;
Bitte warten ..
Mitglied: escape
20.05.2014 um 18:24 Uhr
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:

<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
Bitte warten ..
Mitglied: colinardo
20.05.2014, aktualisiert um 18:31 Uhr
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
Bitte warten ..
Mitglied: escape
20.05.2014 um 18:31 Uhr
aha.. da habe ich was missverstanden.. sorry

Aber kannst du mir trotzdem helfen?

Gruss Mauro
Bitte warten ..
Mitglied: colinardo
20.05.2014, aktualisiert um 18:45 Uhr
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:
<div class="werbung"> ....hier kommt deine Werbung rein  ....</div>
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:
01.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
02.
<script type="text/javascript"> 
03.
$(document).ready(function(e) { 
04.
	$("div.werbung").hide(); 
05.
        // oder alternativ komplett aus dem DOM ausblenden 
06.
         // $("div.werbung").css("display","none"); 
07.
}); 
08.
</script>
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
Bitte warten ..
Ähnliche Inhalte
Microsoft
gelöst Lokale Intranet Site im IE wird nicht über GPO hinzugefügt (1)

Frage von Hanuta zum Thema Microsoft ...

Router & Routing
gelöst Site to Site VPN mit PfSense - Zugriff auf Remote Netze nicht möglich. (6)

Frage von RRESEARCH zum Thema Router & Routing ...

JavaScript
Per URL ein Element ausblenden (1)

Frage von Peter32 zum Thema JavaScript ...

Microsoft Office
gelöst Pivotchart mit (Leer)-Inhalt ausblenden (2)

Frage von MiSt zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows Installation
Eine etwas (wirklich) speziellere Frage: Windows 10-Installation über (14)

Frage von DerFurrer zum Thema Windows Installation ...

Linux
gelöst Boot failed: not a bootable disk (10)

Frage von Fleckmen zum Thema Linux ...

Netzwerkgrundlagen
gelöst Cisco SG500 Series LAG hat sich von selbst umgestellt (10)

Frage von Ex0r2k16 zum Thema Netzwerkgrundlagen ...

Multimedia & Zubehör
gelöst Iphone 6 prob (9)

Frage von jensgebken zum Thema Multimedia & Zubehör ...