Ausführen von benutzerdefiniertem JavaScript auf bestimmten Seiten der Site aus einer einzigen Datei

7

Meine js-Datei wird auf allen Seiten geladen. Einige Funktionen sollen nur auf bestimmten Seiten wie der Homepage nur http://site.com laufen. Kann Javascript die URL der Seite lesen, von der es aufgerufen wird, um festzustellen, ob es sich um die Startseite handelt?

    
zmol 05.02.2011, 03:21
quelle

7 Antworten

9

Sie können das Objekt window.location verwenden, um Eigenschaften über den Standort abzurufen. Einige bemerkenswerte Eigenschaften sind:

  • window.location.href - gibt die gesamte URL der aktuellen Seite zurück
  • window.location.hostname - gibt nur den Hostnamen zurück (den Domain-Namen, einschließlich aller Sub-Domains)
    • Beispiel: www.google.com
  • window.location.pathname - gibt nur den Pfad zurück (der Teil, der dem Hostnamen / der Domäne folgt, aber nicht die Abfragezeichenfolge (Teil der URL, die mit einem "?" beginnt) oder den Hash (Teil der URL, die mit einem "# beginnt) "))
    • Beispiel: /subdir/subpage.html

Obwohl das alles gut funktioniert, würde ich empfehlen (wie andere bereits erwähnt haben), dass es besser wäre, diese Server-Seite zu machen. Der Server kann solche Sachen normalerweise besser als der Client machen.

Wenn Sie Ihren gesamten JS-Code in einer einzigen zentralen Datei haben, können Sie etwas direkt auf der Seite (auf dem Server) hinzufügen, um ein Ereignis nur für diese Seite auszulösen, die zuverlässiger ist als der JS-Standort schnüffeln:

%Vor%     
jhartz 05.02.2011, 03:31
quelle
5

Fügen Sie ein eindeutiges id -Attribut für das Element <body> für jede Seite ein und verwenden Sie dieses, um zu bestimmen, was Ihr JS tun soll. Dies ist, was ich mit meiner einzelnen minimierten Datei mache, die (sobald sie viele kleinere JS-Dateien verkettet) im Prinzip wie folgt aussieht:

%Vor%

Aber Sie können genauso einfach eine effizientere einzelne Datei schreiben als:

%Vor%     
Phrogz 05.02.2011 04:10
quelle
2

Ich denke, es könnte eine bessere Idee sein, dies auf der Serverseite herauszufinden und die richtigen Funktionen aufzurufen / die richtigen Skripte abhängig von der Seite zu laden. Die Serverseite weiß normalerweise besser, wofür die aktuelle Seite eigentlich ist.

    
Matti Virkkunen 05.02.2011 03:23
quelle
2

Sie konnten die URL lesen wie ClosureCowboy sagte , aber das ist irgendwie rückwärts. Wenn Sie wissen, dass Sie keine JavaScript-Datei benötigen, fügen Sie sie normalerweise nicht auf der Seite ein.

    
Jonathon Faust 05.02.2011 03:24
quelle
2

Behalten Sie Ihren gesamten JS-Code in einer einzigen Datei, lassen Sie ihn auf jeder Seite laden (sowieso zwischengespeichert), aber hier ist der Haken:

NUR rufen Sie die benötigten Funktionen von der Seite auf, die sie benötigt

Der Versuch, die Logik "Welche Seite bin ich an" in die JS-Datei zu schreiben, scheint einfach rückwärts zu sein.

    
Nimrod 05.02.2011 04:24
quelle
1

Hier ist ein kleines Stück Code, mit dem ich für jede Seite einen einzigartigen Cookie gesetzt habe. Es sollte gut funktionieren, um genau das zu bekommen, was Sie wollen. Sie können es über einen Schalter ausführen, um verschiedene Aktionen für verschiedene Seiten zu erstellen, oder einfach eine einfache if-Anweisung verwenden, um Code nur auf der Homepage auszuführen.

%Vor%

Ich habe die Datei console.log hinzugefügt, damit Sie sehen können, wie sie die Seite in der Firebug-Konsole aufruft. Ändern Sie es in "Alert", wenn Sie möchten, dass es erscheint.

    
David Duggins 05.02.2011 04:19
quelle
0

Ihr JavaScript kann die aktuelle URL mit window.location abrufen.

%Vor%     
ClosureCowboy 05.02.2011 03:22
quelle

Tags und Links