2009-03-02 5 views
2

Ich habe ein Greasemonkey Skript, das versucht, auf ein HTML-Element zuzugreifen, das deaktiviert. Ist es möglich, mit dem Greasemonkey-Skript einen Workaround zu erstellen, um Konflikte mit dem Adblock-Plugin zu vermeiden?Kann ein Greasemonkey-Skript AdBlock-Filter überschreiben?

Ich bin offen für alle Ideen, aber das Skript zu ändern, um das Adblock-Element zu vermeiden ist keine Lösung zu diesem Zeitpunkt.

Zusätzliche Informationen

Das addblock Element I "enable" Ich versuche, ist ein Table-Element aus einem Google-Suchergebnis.

<table id="mbEnd" width="30%" style="margin-bottom: 1em;"> 

Das Adblock Filter das Element versteckt ist:

google.com,google.com.au,google.co.uk,google.ca,google.se#table(id=mbEnd)(width=30%) 

Update: Einige schlagen vor, dass ich einfach die adblock Filter für die Seite deaktivieren an dem ich arbeite. Ich halte dies auch für eine Nicht-Lösung, da jeder, der mein Skript verwendet, dieselbe Aktion ausführen müsste, und ich kann nicht erwarten, dass alle meine Benutzer ihre Adblock-Einstellungen manuell ändern.

+0

Sie können adblock für diese Website/dieses Element deaktivieren – Malfist

+0

Was sind die Besonderheiten des Elements, auf das Sie zugreifen möchten und auf welche Eigenschaften möchten Sie zugreifen? –

Antwort

1

Sie können Adblock für bestimmte Seiten oder Domänen deaktivieren. Klicken Sie einfach auf den Pfeil neben dem Symbol und Sie erhalten weitere Optionen zum Deaktivieren von adblock.

Es gibt keine Möglichkeit, ein Greasemonkey-Skript Adblock automatisch zu überschreiben, da Adblock die Seite beeinflusst, bevor Greasemonkey-Skripte geladen werden.

+0

Ich denke, der interessante Punkt ist die Art und Weise, in der Adblock die Seite beeinflusst. Es analysiert nicht das HTML-Element aus dem Dokument, aber mein Verständnis ist, dass es ein Benutzer-CSS-Stylesheet auf das Dokument anwendet, das das HTML-Element verbirgt. Siehe http://adblockplus.org/en/faq_internal#elemhide – cmcginty

+0

ABP entfernt so viele Inhalte, wie der Ad Link erkennen kann, und geht nur dann zum Verstecken von Elementen, wenn dies unvermeidlich ist (http://adblockplus.org/en)/filters # elemhide_basic). Wenn das einzige Problem das Verstecken von Elementen wäre, könnten Sie auf das DOM-Element zugreifen, da CSS es nicht vor JavaScript verbergen würde. –

+0

Also bleibe ich bei meiner ursprünglichen Antwort, nämlich dass Greasemonkey gegen ABP verlieren wird. Wenn das Element von ABP blockiert wird, wie soll dann überhaupt JavaScript darauf ankommen? –

0

Auf welche Art von Elementen möchten Sie zugreifen? Die meisten Seitenelemente sollten immer noch verfügbar sein, nur mit 'display: none;'.

Ich benutze jQuery in meinen Greasemonkey-Skripten und es ist in der Lage, den Alt-Text von einem Bild zu bekommen, nachdem ich es mit ABP deaktiviert habe.

$('#s1 + img')[0].alt 
=> Rohm and Haas Paint Quality Institute 

Wenn Sie genauere Informationen angeben, kann ich möglicherweise eine spezifischere Lösung anbieten.

Der Zugriff auf gesperrte iFrames kann schwieriger, aber machbar sein. Auch hier werden mir genauere Informationen helfen.

Verwandte Themen