[gelöst] createElement an bestimmte Position

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [gelöst] createElement an bestimmte Position

    hallo, ich will eine Javscript-Datei einbinden, die aber nicht gecachte werden darf! Also, denke ich hierbei an diesen Weg, da ich dem SRC einen zufalleswert (z.B. 899342jjd8wf) mitgeben kann.
    PHP-Code:
    <script type="text/javascript">
        var 
    objElement document.createElement('script');
        
    objElement.src 'http://www.domain.de/banner-468x60-1-899342jjd8wf3.js';
        
    objElement.language 'javascript';
        
    objElement.type 'text/javascript';
        ???.
    appendChild(objElement);
    </
    script
    ein normales Einbinden der Javascript-Datei geht nur im FF der scheiß IE cachte immer.

    Mein Frage ist, was bzw. wie muss ich das appendChild gestalten, wenn die JS-Datei genau an der Stelle eingebunden werden soll, wo ich den Code aufrufe????

    Danke

  • #2
    Wie wäre es damit? Du erstellt eine banner.php und bindest die über <script type="text/javascript" src="banner.php> ein. Und in der Datei fängst du hiermit an:
    PHP-Code:
    <?php
    header 
    ('Cache-Control: no-cache, must-revalidate');
    header ('Expires: 0');
    header ('Pragma: no-cache');
    header ('Content-Type: text/javascript');
    ?>
    Hier dein JS-Code
    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Zitat von TriphunEM Beitrag anzeigen
      ein normales Einbinden der Javascript-Datei geht nur im FF der scheiß IE cachte immer.
      Dann würde ich es, wie Kropff auch schon vorschlug, wirklich erst mal mit günstigeren Angaben zum gewünschten Caching-Verhalten probieren.

      Mein Frage ist, was bzw. wie muss ich das appendChild gestalten, wenn die JS-Datei genau an der Stelle eingebunden werden soll, wo ich den Code aufrufe????
      Das wäre nicht ganz trivial.

      Du kannst die Position des zum aktuellen Zeitpunkt letzten SCRIPT-Elementes im Dokument nehmen, und dann dein neu erstelltes SCRIPT-Element dahinter hängen.

      Aber wie gesagt, wenn man die Angaben zum Caching vernünftig macht, sollte das eigentlich gar nicht nötig sein.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Danke!

        ja, wie Kropff schon geschrieben hat, mach ich es ja auch. Hinter der JS-Datei liegt ein PHP-Skript und übergebe den Header da:
        PHP-Code:
            header("Expires: 0");
            
        header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
            
        header("Cache-Control: no-store, no-cache, must-revalidate");
            
        header("Cache-Control: post-check=0, pre-check=0"false);
            
        header("Pragma: no-cache");
            
        header("Content-Type: text/javascript"); 
        Im Firefox läuft das auch 1a...aber in IE mal wieder nicht...Wenn ich den Code:
        PHP-Code:
        <script type="text/javascript" src="http://www.domain.de/banner-468x60-1-subid.js"></script
        2 oder mehrmals aufruf, nimmt der IE immer nur den ersten Aufruf. Dem scheint es egal zu sein, was hinter der JS-Datei für ein Content ist. Ist der Aufruf identisch greift der gleich zum Cache...

        Daher meine Idee von oben...

        Kommentar


        • #5
          Zitat von TriphunEM Beitrag anzeigen
          ja, wie Kropff schon geschrieben hat, mach ich es ja auch. Hinter der JS-Datei liegt ein PHP-Skript und übergebe den Header da:
          Wie liegt das Script dahinter?
          Zitat von TriphunEM Beitrag anzeigen
          PHP-Code:
          <script type="text/javascript" src="http://www.domain.de/banner-468x60-1-subid.js"></script
          Nicht eher subid.php?

          Peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            oder häng den UNIXTIMESTAMP dran...

            Code:
            http://www.domain.de/banner-468x60-1-subid.js?time=123456789
            dann ist es für den IE und allen anderen browser auch immer wieder eine Neue Datei.

            Kropff's vorschlag ist aber die Beste Variante
            Zuletzt geändert von Gunah; 02.11.2009, 16:13.

            Kommentar


            • #7
              Die JS-Datei verweist via ModRewrite auf die PHP-Datei!
              RewriteRule ^banner-([0-9x]+)-([0-9]+)-([a-zA-Z0-9]+).js$ /external/nBanner.php?format=$1&userId=$2&subId=$3 [L]
              @Gunah

              Das ist ja das Problem. Um den Timestamp anzuhängen brauch ich halt diese eine Variante, die muss aber die Javascript-Datei an der Stelle ausgeben wo ich den Code auch aufrufe! Denn in diesem Aufruf
              PHP-Code:
              <script type="text/javascript" src="http://www.domain.de/banner-468x60-1-subid.js"></script
              kann ich keine Javascript ausführen um das SRC zu beeinflussen!
              PHP kann ich hier auch nicht einsetzen, weil es sich nur um Javascript-Code handeln darf!!!

              ?
              Zuletzt geändert von TriphunEM; 02.11.2009, 17:51.

              Kommentar


              • #8
                und wenn du es via JS machst?
                getTime()
                und dann halt ähnlich wie bei Google Analytics und co?

                Kommentar


                • #9
                  Ja das ist klar, allerdings kann ich das dann nur so machen!
                  HTML-Code:
                  <script type="text/javascript">
                      var objElement = document.createElement('script');
                      objElement.src = 'http://www.domain.de/banner-468x60-1-899342jjd8wf3.js';
                      objElement.language = 'javascript';
                      objElement.type = 'text/javascript';
                      ???.appendChild(objElement);
                  </script>  
                  Allerdings kann ich den Code schwer dort ausführen wo ich diese Deklaration gemacht haben, weil ich hier mit AppendChild arbeiten muss...

                  Kommentar


                  • #10
                    Hallo,

                    es kann ja sein, dass ich das Problem noch nicht ganz verstanden habe, aber ich frag mich die ganze Zeit, warum du nicht (wenn du schon mit PHP arbeitest) die HTML-Seite mit PHP generierst und an das src-Element mit PHP einen Timestamp-Parameter dranhängst?

                    Gruß,

                    Amica
                    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                    Super, danke!
                    [/COLOR]

                    Kommentar


                    • #11
                      Weil es sich um eine Javascript-Code handelt, der Werbebanner ausliefert. Oder hast du schon mal ein Google-Adsense-Code gesehen, der PHP voraussetzt?

                      Der User soll den Javascript-Code in seine Seite einbauen und kein PHP-Code!

                      Kommentar


                      • #12
                        Zitat von TriphunEM Beitrag anzeigen
                        Das ist ja das Problem. Um den Timestamp anzuhängen brauch ich halt diese eine Variante, die muss aber die Javascript-Datei an der Stelle ausgeben wo ich den Code auch aufrufe!
                        Wie das geht, beschrieb ich ja schon.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Achso,

                          dann gib dem script-Element ein id-Attribut und dann kannst du statt appendChild das Skript ersetzen:

                          Code:
                          var scriptNode = document.getElementById("DIE_ID");
                          scriptNode.parentNode.replaceChild(objElement, scriptNode);
                          @wahsaga:
                          Zitat von wahsaga Beitrag anzeigen
                          Wie das geht, beschrieb ich ja schon.
                          Er hat schon geschrieben, dass das im IE nicht zum Erfolg führte.
                          Zuletzt geändert von AmicaNoctis; 02.11.2009, 18:41.
                          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                          Super, danke!
                          [/COLOR]

                          Kommentar


                          • #14
                            Danke bringt aber auch keine Punkte, da man den Code öfters einbinden kann. Und ich will den User nicht sagen er soll sich für jeden Einbau eine eigene ID einfallen lassen!

                            Kommentar


                            • #15
                              Du musst doch gar nicht mit appendChild() arbeiten. GA macht das auch nicht.

                              document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

                              Kommentar

                              Lädt...
                              X