Zufallszahl oder aktuelles Datum als Parameter mitgeben

  • Hallo alle zusammen,


    Ich muss eine Scriptdatei aufrufen und muss immer einen anderen Parametr mitgeben.

    Im Moment habe ich das so gelöst:


    <script language="JavaScript" src="http://www.NaturalStone.ch/news-Short.js?v=3" type="text/javascript"></script>


    aber v=3 ist leider statisch. Die Ziffer 3 muss immer eine andere Ziffer sein, oder ein aktuelles Datum.

    Wie löse ich sowas? Stelle mir etwas vor wie: v=<%aktDate%> oder v=<%Random%> aber eben in richtiger JavaScript Schreibweise.


    Der Hintergrund ist, dass sich der Inhalt der Datei news-Short.js ändert und vom Browser neu geladen werden soll. Das tut er aber nicht weil er die Datei aus dem Chache holt. Und mir wurde gesagt, mit einem immer anderen Parameter, würde die Datei zwingend neu geladen...


    Vielen Dank für Hilfestellungen

    Gruss Markus

  • Grins, so könnte man es fast verstehen.


    Es geht um folgende Zeile welche in einer HTML Seite ist:


    <script language="JavaScript" src="http://www.NaturalStone.ch/news-Short.js?v=3" type="text/javascript"></script>


    und die Ziffer 3 in dieser Zeile muss immer, bei jedem Aufruf, etwas anderes sein. Dabei ist es vollkommen egal was es ist. Es kann also das aktuelle Datum sein oder es kann eine Zufallszahl sein, was halt einfacher oder kürzer zu programmieren ist.


    Möglicherweise kann man die Zeile auseinander nehmen:


    1 Teil:


    var MeinDateiname = "http://www.NaturalStone.ch/news-Short.js?v=" & Zufallszahl


    2. Teil


    <script language="JavaScript" src=<%MeinDateiname %> type="text/javascript"></script>


    Ich bin mir nicht sicher, ob diese Schreibe wie ich sie hier verwendet habe, JavaScript konform ist...

    Bin froh für jegliche Ideen der Umsetzung.

    Viele Grüsse

    Markus

  • Ich würde das mal so in der art versuchen.

    Code
    1. var heute = new Date();
    2. m=heute.getMonth()+1;
    3. j=heute.getFullYear();
    4. t=heute.getDate();
    5. var neuscript= document.createElement('script');
    6. neuscript.type = 'text/javascript';
    7. neuscript.src = 'http://www.NaturalStone.ch/news-Short.js?v='+t+':'+m+':'+j+'';
    8. document.getElementsByTagName('head')[0].appendChild(neuscript);

    Aber ein Script wo Täglich eine neue Url ist kenne ich auch noch nicht .Bist du sicher das es ein Script ist und kein iframe wo Täglich neues Wetter oder so was drinne ist ?


    Beim Datum wirst du wohl die Doppel Punkte raus nehmen müßen. Oder du machst es mit Zufallzahl

    Code
    1. http://www.NaturalStone.ch/news-Short.js?v='+Math.floor(Math.random() * Math.floor(90000))+'
  • Guten Abend,


    lach, ja, ich bin sehr sicher dass es keine Frameseite ist. Es geht um die Seite NaturalStone.ch und um das was oben im roten Rahmen geschrieben steht. Wenn sich der Inhalt des Roten Rahmen ändert, also die Datei news-Short.js angepasst wird, dann holt der lokale Browser das aus dem Cache anstatt der neue Inhalt.


    und mir wurde gesagt, dass ich dies mit einem Parameter der sich ändert lösen kann.


    Die Variante mit der Zufallszahl, der Einzeiler, gefällt mir sehr gut. Den probiere ich gleich aus.


    Ich habe mal gehört, dass die Zufallszahl nicht zufällig sein soll. Dass die, ich glaube, das war bei Excel, aus einer Liste kommt und immer wenn mit der Arbeit beginnt, sich die wiederholen würden... aber es ist schon lange her, ich weiss nicht ob das noch immer stimmt...


    Ich bau das Teil jetzt ein und ändere dann die News-Short.js und bin gespannt was danach noch alles funktioniert...


    Vielen Dank für die Hilfe...
    ich melde mich...

  • Also, ich habe die Zeile eingebaut und den Inhalt der News Datei verändert. Aber der Browser holt die Datei noch immer aus dem Cache. Also stimmt die Information welche ich habe, dass die Datei wenn sie mit einem Parameter aufgerufen wird, nicht....


    Schade, danke Dir dennoch sehr viel mals für die Hilfestellung...

  • Was ist an der folgenden Zeile falsch?


    tSt += '&nbsp;Jetzt aktuell: Staketenzaun aus unbehandeltem Kastaneinholz. Aktion: 210.- für 10m Rolle 100cm hoch.&nbsp;';

    tSt += getURLParameter('v');



    Vielen Dank für Hilfe

    Gruss Markus

  • He.

    Aber fals du das Script immer neu Laden willst kann man das , caching für js-files oder spezifische dateien per htaccess abstellen.


    Oder php jedesml nen anderen Link durch time()

    Code
    1. echo '<script src="http://www.NaturalStone.ch/news-Short.js?v='.time().'"></script>';

    Oder XMLhttp Request wäre vieleicht auch noch möglich

  • gib mir doch mal den richtigen link von wo du es haben möchtest . Notfalls per PN.


    Willst du da nur eine andere Zahl drinne stehen haben damit er die Datei jedesmal neu holt ,Oder wozu die Random zahl?

    Die Webseite ist http://www.NaturalStone.ch oben hat es einen roten Rahmen. Dieser wird durch die Datei http://www.NaturalStone.ch/news-Short.js geschrieben. Und wenn ich diese ändere, dann würde ich das gerne sehen wollen. Und eigentlich ohne das Cache zu leeren. Bis jetzt habe ich nur die index.html mit Deinem Code angepasst.


    Und genau, v=irgend etwas soll nur bewirken, dass die news-Short.js neu geladen wird und nicht aus dem Cache geholt wird. Also wenn ich das richtig verstanden habe.


    Ich verwende die gleiche news-Short.js auch noch auf einigen anderen Seiten wie zum Beispiel http://www.Kastanienholz.ch Sie dient zum Beispiel um kurzfristige Aktionen bekannt zu machen. Und da möchte ich eben nur diese eine JS Datei ändern und alle Webseiten zeigen es an...


    Also das wäre eben meine Idee...


    Viele liebe Grüsse

    Markus

  • He.

    Aber fals du das Script immer neu Laden willst kann man das , caching für js-files oder spezifische dateien per htaccess abstellen.


    Oder php jedesml nen anderen Link durch time()

    Code
    1. echo '<script src="http://www.NaturalStone.ch/news-Short.js?v='.time().'"></script>';

    Oder XMLhttp Request wäre vieleicht auch noch möglich

    Ok, habe den .Time(). auch ausprobiert. Aber die JS Datei wird leider dennoch aus dem Cache geholt.

  • Vielleicht solltest Du mal zeigen, wie Du es umgesetzt hast.

    Der Ansatz mit time() oder besser mktime() ist der sinnvollste.

    Sehr gerne:


    auf http://www.NaturalStone.ch habe ich in der Index.html folgenden Code im <Body>:

    <script src="http://www.NaturalStone.ch/news-Short.js?v='.time().'"></script>


    Vorher hatte ich es so im <Body>:

    <script language="JavaScript" src="http://www.NaturalStone.ch/news-Short.js?v='+Math.floor(Math.random() * Math.floor(90000))+'" type="text/javascript"></script>



    In beiden Versionen wurde mir der Inhalt der Datei news-Short.js ausgeführt, bez eben der rote Rahmen mit dem Text drinn angezeigt. Aber wen ich die Datei news-Short.js anpasse und ein Reload mache oder zwischen den Seiten wechsle, dann bleibt der Text im roten Rahmen trotzt Änderung stehen.



    Darum bin ich jetzt am versuchen den mit v= übergebene Parameter in der Datei news-Short.js sichtbar zu machen. Aber ach Gott... drei Varianten habe ich versucht...


    1. Veriante


    tSt += getURLParameter('v');


    2. Variante


    tSt += querystring ;


    3. Variante

    var mp = getParameterByName('v');

    tSt += mp;


    im späteren Verlauf steht dann:


    document.write(tSt);


    Aber egal welche der drei Varianten ich verwende, der rote Rahmen mit dem Text aus der Variabel tSt erscheint nicht mehr. Ich bin einfach nicht in der Lage, den übergebenen Parameter v innerhalb meines Scriptes auszugeben... :-(


    Wie sagt man so schön: "Never change a running system..."


    Vielen lieben Dank

    Gruss Markus

  • OK.

    Das ist schon mal Falsch

    Code
    1. <script src="http://www.NaturalStone.ch/news-Short.js?v='.time().'"></script>

    Jetzt hoffe ich mal das ich es richtig mache weil php ist noch nicht mein Hauptfach


    PHP
    1. <?php echo "<script src="http://www.NaturalStone.ch/news-Short.js?v='.time().'"></script>" ?>

    Das müßte hoffentlich so aussehen.

    Und auch die ersten 2 Varianten hattest du auch nicht richtig eingebunden,wenn du es so ausprobiert hast wie es jetzt noch auskomentiert ist. Aber probier doch erstmal das hier die php Variante

  • Guten Abend Basti,


    Wird denn <?php... in einer HTML Datei ausgeführt? Am Ende geht es um mehrere Hundert HTML Dateien in den Webs... die kann ich nicht auf xy.php umbenennen. Ich müsste also bei einer HTML Version bleiben... denke ich... wobei wir beide eine Gemeinsamkeit habe ;-) ...es ist nicht mein Hauptfach...


    etwas verl¨rzt sieht mein Code so aus:


    Datei index.html


    <html><body>

    <script src="http://www.NaturalStone.ch/news-Short.js?v='.time().'"></script>

    ...

    </body></html>


    und die Datei news-Short.js sieht verkürzt so aus:


    var tSt = '';

    tSt += '&nbsp;Jetzt aktuell: Staketenzaun aus Kastaneinholz.&nbsp;';

    document.write(tSt);


    Und eigentlich würde ich jetzt zum Testen die Datei news-Short.js mit der Ausgabe des Wert von v ergänzen. Das stelle ich mir dann so vor, geht aber nicht, es kommt nix.


    var tSt = '';

    tSt += '&nbsp;Jetzt aktuell: Staketenzaun aus Kastaneinholz.&nbsp;';

    tSt += getURLParameter('v');

    // tSt += getParameterByName('v');

    document.write(tSt);



    Vielleicht sollte ich erst mal ins Bett gehen... danke und vielen Dank und gute Nacht...

    Markus

  • Das kann nicht funktionieren, weil Du eine index.html hast.

    Um PHP verwenden zu können, muss es eine .php sein! Ja, man kann den Webserver auch umkonfigurieren, aber ich unterstelle dem TE, dass er das nicht getan hat und auch gar nicht weiß wie das geht!


    Weiterhin kannst Du in Attributen des <script>-Tags kein Scripting verwenden, es sei denn es handelt sich um Event-Attribute, was das src aber nicht ist!


    Du musst komplett umdenken...

  • Gut dann fällt php ja erstmal Flach

    Was meinst du damit jetzt genau? Versuchst du den Kram hinter den "V" auszulesen oder wie soll ich dich da jetzt verstehen? Fals ja versuche es mal so

    der Alert sollte dann das hinter den v= anzeigen. Ich habe mal alert() genommen weil document.write unterstütze ich nicht.

    Das nimmt man heut zu Tage eigentlich auch nicht mehr

  • Aha, dann bin ich also definitiv auf dem Holzweg...


    Der Webserver gehört einem Provider, da wird keiner etwas umkonfigurieren können oder wollen. Also bleibt HTML weiterhin HTML.

    Und somit wird es wohl auch nie möglich sein, dass ein Script beim Aufruf neu geladen wird, anstatt aus dem Cache zu lesen... snief...

    Dann müssen wir halt weiterhin solange warten, bis der Browser von sich aus die "Lebenszeit" des Cache überschritten hat und die Datei neu geladen wird.


    Umdenken, da bin ich immer zu haben dafür... nur was soll ich denken, habe zu wenig Hirnzellen auf JavaScript spezialisiert...


    Danke, Arne und eine gute Nacht wünsche ich Dir.


    Allen anderen auch...


    Gruss Markus


    der heute sicher schlecht träumen wird...

  • Kannst du mal erklären was du da genau vor hast ? In deiner JS hast du mehrer Werbung stehen( ICh nenne das mal Werbung jetzt ) du hast aber nur eine einzige über document.write freigegeben,der kann nix anderes anzeigen so wie es jetzt ist . Wozu muß das Script den jetzt immer wieder neu geladen werden ? Wenn es doch aus Cache kommt ist doch besser für Kunden weil wenniger Ladezeit. Wenn du da jetzt jeden Tag eine neue Werbung rein machen willst ,dann könnte man sich ja was anderes einfallen lassen. Nur wie es jetzt ist sehe ich da kein sinn. Deswegen erklär das doch mal bitte

  • Ich schätze es sollen immer die aktuellen News kommen, unabhängig vom Caching des Browsers.

    Das ist eine recht übliche Vorgehensweise, haben wir bei Webcams usw. auch gemacht. Der IE hat damals auch nie das aktuelle Bild geladen, weil er davon ausgegangen war, es bereits zu haben. Mit einem Timestamp hinter dem Dateinamen als Parameter hat er der das geschluckt.


    EDIT

    Weißt Du denn, ob PHP vorhanden ist in Deinem Webspace? Das ist ja heute nichts besonderes mehr.

    Teste es einfach, indem Du eine test.php anlegst und folgendes reinschreibst:

    PHP
    1. <?php
    2. phpinfo();

    Wenn Du diese direkt aufrufst, also bspw.: http://www.naturalstone.ch/test.php, sollte entweder ein Fehler ( wenn ja, welcher?! ) oder eine Tabelle mit der aktuellen PHP-Konfiguration kommen.


    Sollte PHP aktiv sein, kannst Du über ein kleines Script alle Dateien von .html in .php umbenennen.

    Den Link musst Du eh in allen Dateien anpassen, was sich aber evtl. auch automatisieren lässt. Das kann man dann ja noch sehen.


    Schau erst mal, ob Du PHP hast.