Greasemonkey soll ne Funktion "entfernen"

Andreas Späth

Erfahrenes Mitglied
Hallöchen miteinander.


Auf einer Seite die ich oft Besuche wird seit Neustem ein dämliches Popunder "angeboten" dass mir langsam tierisch auf den Keks geht.

Addblock Plus ist nicht im Stande zu helfen, der Firefox eigene Popup Blocker funktioniert zwar, blockiert mir aber auch die "guten" Popups ;)


Die betreffende Funktion hab ich bereits ausgemacht, hab versucht das ganze irgendwie mit Replace einfach durch ein leeres Feld zu ersetzen, das war aber bisher nicht erfolgreich.

Es geht um folgende Funktion die unschädlich gemacht werden soll.
Code:
        function checkTarget(e)
        {
        	if ( !getCookie('popundr') ) {
                var e = e || window.event;
                var win = doOpen('http://adson.awempire.com/iframes.....xxxwasauchimmer');

        		setCookie('popundr', 1, 60*1000);
        	}
        }



Die Adresse die aufgerufen wird, wird jedesmal geändert von dem PHP Script dahinter.

Würde mich freuen wenn Jemand hier den entsprechenden Hinweis hat, Javascript ist absolut nicht meine Welt. :confused:
 
Moin,

die Lösung in dem speziellen Fall sah so aus, dass dieses Popunder nur in Erscheinung trat, wenn ein bestimmter Cookie nicht existierte.

Also wurde kurzerhand per Greasemonkey dieser Cookie erstellt, und das Popunder blieb dort, wo es hingehört....in der Versenkung:-)

Ob das in deinem Fall auch so geht, kann ich nicht sagen....
 
Ist es mit Greasemonkey allgemein nicht möglich, Funktionen zu überschreiben, bzw. "kaputtzumachen"?
Ich habe da schon sehr viel versucht.

Gruß,
pcworld
 
Doch, das ist schon möglich.

per unsafeWindow kannst du dich aus Greasemonkey heraus in den Geltungsbereich des Authoren-Skriptes bewegen(also das window-Objekt), und dort alles überschreiben, was du willst,

Beispiel:
Code:
unsafeWindow.funktionsname=function(){}
würde ein Funktion funktionsname erstellen, welche eine bereits vorhandene überschreibt.
Wirkung zeigt dies allerdings erst nach dem Laden der Seite, weil das Greasemonkey-Skript als letztes "injiziert" wird. Aufrufe vor diesem Zeitpunkt sind also durch GM nicht beeinflussbar.
 
Danke, so funktioniert das.
Ich hatte immer versucht, statt "unsafeWindow" "window" zu verwenden.
Aber warum heißt dieses Objekt genau unsafeWindow?

Gibt es sowas auch für document? Weil Zugriff auf document funktioniert nicht richtig...

Gruß,
pcworld
 
Weil dem Code, der aus der Webseite selbst kommt, nicht vertraut werden kann...deshalb "unsicher".

Greasemonkey-Skripte besitzen höhere Privilegien, als normales JS in Webseiten, was ja auch kein Problem ist, denn der User erstellt die Skripte selbst, und hat Kontrolle darüber, was sie machen.

Dies ist nicht mehr der Fall, wenn Greasemonkey mit dem JS-Code in der Seite interagiert, weil man nicht weiss, was dort passiert.

Mal als Beispiel:
Du wertest den Rückgabewert einer JS-Funktion in einer Webseite innerhalb von GM per eval() aus.
Dieser Rückgabewert hat nun die Privilegien von Greasemonkey....kaum auszudenken, was der Author der Webseite da bei dir anrichten kann :eek:

Deshalb diese Trennung.

Der von mir gepostete Vorschlag sollte da jedoch unbedenklich sein.
 

Neue Beiträge

Zurück