Björn Mayer: Etwas als Werbung markieren

Hallo!

In einem Div-Tag einer Website befinden sich neben verschiedenen Werbebanner auch noch Textpassagen. Hat ein Besucher nun AdBlock o.ä. aktiviert sind nur die Textpassagen zu sehen. Gib es eine Möglichkeit, dass bei nicht-aktiven Ad-Blockern Banner plus Textpassagen und bei aktiven Ad-Blockern nichts zu sehen ist?

Gruß
Björn

  1. hi,

    In einem Div-Tag einer Website befinden sich neben verschiedenen Werbebanner auch noch Textpassagen. Hat ein Besucher nun AdBlock o.ä. aktiviert sind nur die Textpassagen zu sehen. Gib es eine Möglichkeit, dass bei nicht-aktiven Ad-Blockern Banner plus Textpassagen und bei aktiven Ad-Blockern nichts zu sehen ist?

    Natürlich - wenn der Benutzer das komplette Element zum Blocken auswählt.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo!

      Hat ein Besucher allerdings ein Filter-Abonnement sieht er die Werbung von vornherein nicht, sondern nur die ihm nichtssagenden Textpassagen. Ich dachte, vielleicht gibt es eine Konvention mit der man z.B. mittels Kommentar-Tag etwas als Werbung zu markiert und das durch gängige Ad-Blocker erkannt wird.

      1. Hallo,

        Nein, Werbeblocker arbeiten meistens Filterbasiert, dass heißt nur (z.B.) Grafiken aus bestimmten Quellen werden blockiert. Es ist ziemlich unmöglich, etwas anderes mitblockieren zu lassen.

        Du könntest natürlich auch über Javascript abfragen, ob der Banner dargestellt wird und falls nicht den Rest der Seite ausblenden oder so, aber du kannst dann immer noch nicht den Benutzer bzw. Werbefilterautor daran hindern, das Script gleich mitzublocken oder Javascript zu deaktivieren.

        Wieso willst du überhaupt so was machen? Anscheinend ist dir wichtiger, dass der Benutzer deine Werbung sieht, als das er deine Inhalte sieht. Das erscheint mir etwas mehrwürdig.

        Jonathan

        1. Hi!

          Du könntest natürlich auch über Javascript abfragen, ob der Banner dargestellt[...]

          Die Idee kam mir auch schon. Ich weiß allerdings nicht wie ich das umsetzen soll. Der gelieferte Quellcode ist mit oder ohne AdBlock deckungsgleich.

          Wieso willst du überhaupt so was machen? Anscheinend ist dir wichtiger, dass der Benutzer deine Werbung sieht, als das er deine Inhalte sieht. Das erscheint mir etwas mehrwürdig.

          Woraus du das schließt ist mir schleierhaft. Die Textpassagen die ich verstecken möchte beziehen sich lediglich auf die Werbeanzeigen.

          1. Hallo!

            Du könntest natürlich auch über Javascript abfragen, ob der Banner dargestellt[...]
            Die Idee kam mir auch schon. Ich weiß allerdings nicht wie ich das umsetzen soll. Der gelieferte Quellcode ist mit oder ohne AdBlock deckungsgleich.

            Als erstes musst du wissen, ob du den Code verändern darfst. Wenn ja, dann schaust du dir den onload-Eventhandler an.

            ciao, ww

            --
            Schäuble:
              "Wir können alles. Außer Rechtsstaat."
            1. Hi!

              Als erstes musst du wissen, ob du den Code verändern darfst. Wenn ja, dann schaust du dir den onload-Eventhandler an.

              Erstmal danke. Technisch funktioniert es.

              Was das rechtliche betrifft:
              "Der HTML-Code darf im Sinne der einwandfreien Funktionalität nicht verändert werden!"
              Darf ich den Code ändern, wenn ich ihn dadurch dich Funktionalität nicht beeinträchtige?

              1. Hallo,

                Was das rechtliche betrifft:
                "Der HTML-Code darf im Sinne der einwandfreien Funktionalität nicht verändert werden!"
                Darf ich den Code ändern, wenn ich ihn dadurch dich Funktionalität nicht beeinträchtige?

                Laut dem Rechtlichen Teil nicht. Nichts hindert dich aber daran, den Eventhandler über Javascript hinzuzufügen. Z.B. per xxx.onload=... oder bei Mozilla xxx.AddEventListener(...). Evtl. kannst du auch mit GetComputedStyle() die display-Eigenschaft abfragen.

                Jonathan

                1. Hi!

                  [...] Nichts hindert dich aber daran, den Eventhandler über Javascript hinzuzufügen. Z.B. per xxx.onload=... oder bei Mozilla xxx.AddEventListener(...). [...]

                  Danke für deinen Hinweis. Ich hatte den img-Tag der Werbebanner bisher wie folgt geändert:

                    
                  <img onLoad="doIt();" ...>  
                  
                  
                    
                  <script type="text/javascript">  
                     function doIt() { /* Text darstellen ... */ }  
                  </script>  
                  
                  

                  Das hatte auch den erwarteten Effekt, doIt() wurde nur ausgeführt wenn das Bild geladen wurde (also bei inaktivem AdBlock).

                  Ich habe nun folgende Änderungen durchgeführt:

                  Den img-Tag von Oben wieder "bereinigt".

                    
                  <body onLoad="checkImages();" >  
                  
                  
                    
                  function checkImages() { document.images[8].onLoad = doIt(); }  
                  
                  

                  images[8] ist ein Werbebanner. Warum wird doIt() nun immer gefeuert, unabhängig davon, ob das Bild dargestellt wird oder nicht?

                  1. Hallo,

                    function checkImages() { document.images[8].onLoad = doIt(); }

                    
                    >   
                    > images[8] ist ein Werbebanner. Warum wird doIt() nun immer gefeuert, unabhängig davon, ob das Bild dargestellt wird oder nicht?  
                      
                    Weil du "onLoad" die Rückgabe der doIt()-Funktion zuweist, nicht die doIt-Funktion selber.  
                      
                    Probiere mal  
                      
                    ~~~javascript
                      
                    function checkImages() { document.images[8].onLoad = doIt; }  
                    
                    

                    Jonathan

                    1. Hi!

                      Probiere mal

                      function checkImages() { document.images[8].onLoad = doIt; }

                        
                      Hmm, nun wird das Event gar nicht mehr gefeuert. Es erscheint mir so, als würder der "Zeiger" auf die Funktion doIt nicht gesetzt werden. Die Fehlerkonsole meldet allerdings nichts.  
                        
                      Gruß
                      
                      1. hi,

                        function checkImages() { document.images[8].onLoad = doIt; }

                        
                        >   
                        > Hmm, nun wird das Event gar nicht mehr gefeuert.  
                          
                        Kann auch nicht, weil du die Funktion checkImages ja mit dem onload-Event des Dokumentes aufrufst. Dieser feuert aber erst, wenn \_alle\_ externen Ressourcen fertig geladen wurden - auch die Bilder.  
                        Du fügst also den Bildern den onload-Handler erst hinzu, wenn diese schon längst fertig geladen sind. Der Event wird aber nicht "rückwirkend" ausgelöst.  
                          
                        gruß,  
                        wahsaga  
                          
                        
                        -- 
                        /voodoo.css:  
                        #GeorgeWBush { position:absolute; bottom:-6ft; }
                        
                        1. Hallo!

                          [...] Du fügst also den Bildern den onload-Handler erst hinzu, wenn diese schon längst fertig geladen sind. Der Event wird aber nicht "rückwirkend" ausgelöst.

                          Das ist nachvollziehbar. Gehe ich Recht in der Annahme, dass ich das onLoad-Event des img-Tags nur vom Tag selber aus aufrufen kann? Da zu jedem anderen Zeitpunkt, entweder "document.images[8]" undefinded ist oder das onLoad-Event schon gefeuert wurde.
                          Wie könnte demnach ein Weg zur Lösung meines Problems aussehen?

                          1. Hi!

                            Ok, hat sich erledigt. Struppi gab den Hinweis, mit onload (statt onLoad) und dem Script am Ende des body-Tags klappt es. Leider entspricht dieses vorgehen jedoch nicht der Trennung Markup und Stil, gäbe es eine bessere Lösung?

                            1. Hi!

                              [...] Leider entspricht dieses vorgehen jedoch nicht der Trennung Markup und Stil, gäbe es eine bessere Lösung?

                              Ok, hat sich auch erledigt. Ich rufe das Script nun erst nach den img-Tags der Banner von einem Blind-Gif aus auf.

                              Danke für die Hilfe
                              Björn

                          2. Ahoi Björn Mayer,

                            Wie könnte demnach ein Weg zur Lösung meines Problems aussehen?

                            Da ich nicht weiss wie der AdBlocker, bzw. "handelsübliche"-AdBlocker diese WErbebanner ausblenden kann ich dir nicht direkt weiterhelfen. Setzten diese evt. einfach das display auf none? wenn ja könntest du dies abfragen, oder du setzt beim Banner ein attribut per onLoad und frägst ab ob dieses gesetzt ist.

                            MfG

                    2. Probiere mal

                      function checkImages() { document.images[8].onLoad = doIt; }

                        
                      den onLoad Event gibt es nicht!  
                      JS ist case-sensitive  
                        
                      Struppi.
                      
        2. Hallo!

          Anscheinend ist dir wichtiger, dass der Benutzer deine Werbung sieht, als das er deine Inhalte sieht. Das erscheint mir etwas mehrwürdig.

          Für die blöde Einstellung noch mehr Würde? Neee, da stimme ich dir nicht zu :-)

          *SCNR* ;)

          ciao, ww

          --
          Schäuble:
            "Wir können alles. Außer Rechtsstaat."