Alter Mann: Anhand von Cookies verschiedene Werbung ausliefern.

Hallo,

ich muss etwas ausholen. Aus Serverlastgründen habe ich meine Webseite mit einem Caching ausgestattet. Hierbei werden die Seiten einmal generiert und dann im Caching verzeichnis (LIVE) abgelegt wo sie die nächsten 24 Stunden abgerufen werden können.

Nun habe ich nur ein Problem ich kann die Nutzer nur schwer differenzieren und Ihnen ggf. mehr Inhalte anzeigen. Daher habe ich mir überlegt Sie anhand von Cookies zu differenzieren.

Einfache Regel:
User A hat kein Cookie besucht die Seite und sieht 1 Werbebanner.
User B hat ein Cookie besucht die Seite und sieht 2 Werbebanner.

Da Javascript sofern ich die Doku verstanden habe funktioniert
if(document.cookie){ machwas(); }

Nur wie kann ich dann folgenden Adservercode aktivieren?
<script src="http://mein-adserver.de/scripts/skyer.js" type="text/javascript"></script>

Denn

if(document.cookie){  
<script src="http://mein-adserver.de/scripts/skyer.js" type="text/javascript"></script>  
}

kann ja nicht klappen ;-)

  1. Om nah hoo pez nyeetz, Alter Mann!

    Du könntest den entsprechenden Elementen eine Klasse verpassen, die display: none; enthält.

    Matthias

    --
    Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Dach und Dachs.

    1. مرحبا

      Du könntest den entsprechenden Elementen eine Klasse verpassen, die display: none; enthält.

      Besteht eigentlich die Gefahr, dass der Inhalt von auf display:none; gesetzten Elementen im Hintergrund doch geladen wird?

      mfg

      --
       .
      ..:
      1. Om nah hoo pez nyeetz, Malcolm Beck´s!

        Besteht eigentlich die Gefahr, dass der Inhalt von auf display:none; gesetzten Elementen im Hintergrund doch geladen wird?

        In dem Fall bestimmt, denn das Script arbeitet ja unabhängig davon.

        Matthias

        --
        Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Brand und Brandenburg.

        1. مرحبا

          Besteht eigentlich die Gefahr, dass der Inhalt von auf display:none; gesetzten Elementen im Hintergrund doch geladen wird?

          In dem Fall bestimmt, denn das Script arbeitet ja unabhängig davon.

          Tatsächlich, schade.

          mfg

          --
           .
          ..:
  2. ola,

    if(document.cookie){

    <script src="http://mein-adserver.de/scripts/skyer.js" type="text/javascript"></script>
    }

    
    > kann ja nicht klappen ;-)  
      
    Natürlich nicht, du schreibst es ja als HTML Code in einer JS Anweisung. :) Du könntest z.b.  
      
    `document.write('<script src="http://mein-adserver.de/scripts/skyer.js" type="text/javascript"></script>');`{:.language-javascript}  
      
    nutzen, was allerdings kein guter Stil ist. Besser wäre sich ein Element zu basteln und es an der richtigen Stelle anzuhängen - Get natürlich nur wenn der DOM Baum bis dahin aufgebaut ist - und ist davon abhängig wie das externe Skript funktioniert.  
      
    ~~~javascript
    if(document.cookie)  
    {  
    Werbung = document.createElement('script');  
    Werbung.src = 'http://mein-adserver.de/scripts/skyer.js';  
    Werbung.async = true;  
    document.getElementById('Werbeanzeiger').appendChild(Werbung);  
    } else { /* Anderer Werbebanner */ }
    

    Ungetestet.

    mfg,
    Rolfi

  3. Hallo,

    Da Javascript sofern ich die Doku verstanden habe funktioniert
    if(document.cookie){ machwas(); }

    Nein, das Lesen eines konkreten Cookies funktioniert anders. if (document.cookie) prüft, ob überhaupt ein Cookie existiert, denn document.cookies ist ein String, der sämtliche Cookies in einem bescheuerten Format enthält. Du solltest eine Helferfunktion wie getCookie verwenden, um einen konkreten Cookie zu prüfen. Denn höchstwahrscheinlich setzen fremde Scripte noch viele weitere Cookies.

    Denn

    if(document.cookie){

    <script src="http://mein-adserver.de/scripts/skyer.js" type="text/javascript"></script>
    }

    
    > kann ja nicht klappen ;-)  
      
    Im Prinzip so, wie Rolfi sagt, siehe auch [JavaScript asynchron laden](http://molily.de/weblog/javascript-asynchron).  
      
    Ob das Werbescript es zulässt, asynchron geladen zu werden, müsstest du überprüfen. Wenn es selbst mit document.write() arbeitet und an der Stelle im DOM steht, wo das Banner eingefügt wird, dann müsstest du auch document.write() verwenden, um es fallweise einzufügen.  
      
    Grüße,  
    Mathias
    
    -- 
    [Chaplin.js – JavaScript application architecture using Backbone.js.](http://chaplinjs.org/)