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, 3395 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.
Mit freundlichen Grüßen 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>

Mit freundlichen Grüßen 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Firewall
gelöst Site-to-Site-VPN und Cisco VPN-Client von gleicher IP (2)

Frage von TripleDouble zum Thema Firewall ...

Batch & Shell
gelöst Powershell Mauszeiger ausblenden (11)

Frage von Marabunta zum Thema Batch & Shell ...

Firewall
gelöst VPN Site to Site von IPFire zu Sophos UTM (19)

Frage von touro411 zum Thema Firewall ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...