Hilf mir, Skript zu verstehen src="some.js? param1 = eins; param2 = zwei" /

8

Ich habe Brocken wie unten manchmal auf Webseiten beobachtet. Also bin ich neugierig zu wissen, was das wirklich macht? oder warum ist es so geschrieben?

<script src="somefile.js?param1=one&param2=two" />

Ich kann nur wenige Absichten dahinter erkennen

  • Es ist keine Seiten-URL (ich meine .aspx / .php / .jsp usw.), also nicht hackenden Code, wo Benutzer Code wie diese hinzufügen können, um Daten zu erhalten, ohne die Aufmerksamkeit der Benutzer als sein Tag, das nicht auf rendern UI ODER Implementierung alter AJAX-Alternativen
  • Diese Art von URL-Parameter ist nützlich, wenn der Benutzer nicht möchte, dass die JS-Datei (irgendeine andere Ressource wie Bild) zwischengespeichert wird. Dies kann eine schnelle Möglichkeit sein, das Caching zu verwalten

Aber ich kann nicht herausfinden,

  • Sieht nach Seiten-URL-Parametern aus, aber sind diese Parameter in der JavaScript-Datei sowieso lesbar und haben Sie ein zusätzliches Dienstprogramm?
  • Haben diese Parameter hier eine zusätzliche Rolle?
  • Was sind die anderen möglichen praktischen Szenarien, in denen Code wie dieser verwendet werden kann / wird?

Bitte geben Sie daher einige Eingaben an, die sich auf dasselbe beziehen.

Danke,

    
Anil Namde 23.12.2009, 17:13
quelle

6 Antworten

7

Ausführen von Nicht-JS-Code innerhalb von .js-Erweiterungen

In solchen Fällen könnte diese .js-Quelldatei ( richtige Server-Konfigurationen ) haben tatsächlich PHP / .NET Code, der diese angehängten Werte lesen kann.

Wie Sie gesagt haben, Cache vermeiden ...

Außerdem fügen Personen gelegentlich eine zufällige Zeichenfolge am Ende ihrer referenzierten Elemente an, um zu verhindern, dass zwischengespeicherte Daten geladen werden.

    
Sampson 23.12.2009, 17:15
quelle
4

Die URL mit '.js' bedeutet nichts. Es könnte immer noch von einem serverseitigen Skript wie einem ASP oder PHP behandelt werden.

    
Nicolás 23.12.2009 17:53
quelle
4

Entweder ist die JavaScript-Datei nicht statisch (sie wird vom Server basierend auf den Parametern in ihrer Querystring generiert)

ODER

In der JavaScript-Datei selbst können Sie ihre eigenen Querystring-Parameter überprüfen lassen (nicht nur die der Seite, sondern auch die der JavaScript-Quellen-URL).

ODER

(Dies passt nicht genau zu Ihrem Szenario, aber) Sie können auch Parameter am Ende von Bild- und Skript-URLs als Möglichkeit zur Versionierung hinzufügen. Die Version mit der URL="somescript.js? V = 3" wird vom Benutzer zwischengespeichert, bis sich die Seite dann ändert und die URL nicht="somescript.js? V = 4" lautet. Die Datei wird unabhängig von der Browsereinstellung durch die Version auf dem Server ersetzt.

Meine Annahme (ohne diesen speziellen Fall zu betrachten) ist, dass die Javascript-Datei ihren eigenen Querystring liest. Ich habe das getan, und es ist sehr hilfreich.

    
Gabriel McAdams 23.12.2009 17:19
quelle
2
  
    
      

Sieht wie Seiten-URL-Parameter aus, aber sind diese Parameter in der JavaScript-Datei sowieso lesbar und haben ein zusätzliches Dienstprogramm?

    
  

Ja Sie können sie lesen In JavaScript verwendet Scriptaculous diesen Ansatz zum Laden von Modulen, z. B .:

%Vor%
  
    
      

Spielen diese Parameter hier eine zusätzliche Rolle?       Was sind die anderen möglichen praktischen Szenarien, in denen Code wie dieser verwendet werden kann / wird?

    
  

Dies kann auch für serverseitiges Skript-Verknüpfen und Reduzieren verwendet werden, natürlich unter Verwendung einer URL-Umschreibtechnik, um die .js-Erweiterung zu haben, und wie Sie sagen, ist es eine übliche Technik, Zeitstempelparameter hinzuzufügen, um den Browser-Cache zu unterbrechen.

    
CMS 23.12.2009 17:27
quelle
2

Es kann aus drei verschiedenen Gründen verwendet werden:

1) Um die JavaScript-Datei auf dem Server abhängig von den Parametern zu generieren;

2) Um Zwischenspeichern zu vermeiden;

3) Parameter an JavaScript selbst übergeben

    
jbochi 23.12.2009 17:16
quelle
0

Ein Beispiel hierfür wäre ein serverseitiger Handler für somefile.js, der die Parameter (Namen anderer Skripte) verwendet, um zu bestimmen, welche Skripte tatsächlich benötigt werden, und sie zu kombinieren / zu minimieren und sie als eine einzige somefile.js zurückzugeben Skriptdatei.

    
Chris 23.12.2009 17:24
quelle