2016-04-25 2 views
1

Ich habe eine HTML-Seite, die einen Verweis auf einige Skripte wie diese hier hat:Wie dynamisch Route zu Skript src auf einer HTML-Seite hinzufügen?

<script charset="utf-8" src="Content/Styles/ThemeForest/assets/js/vendors.js"></script> 
<script charset="utf-8" src="Content/Styles/ThemeForest/assets/js/app.js"></script> 

Das Problem ist, dass, wenn ich meine Website auf einen Server hochladen, es nicht mehr funktioniert. Ich dachte, wenn ich stattdessen den Namen der Webanwendung hinzufüge, wird es wieder funktionieren. Etwas wie folgt aus:

<script charset="utf-8" src="MySite/Content/Styles/ThemeForest/assets/js/vendors.js"></script> 
<script charset="utf-8" src="MySite/CContent/Styles/ThemeForest/assets/js/app.js"></script> 

Nun, die Sache ist, dass ich weiß nicht, wie die Web-Anwendung Name aussehen würde, wenn es auf einen Server hochgeladen ... so würde ich dynamisch gerne die Anwendung hinzufügen Name der Quelle.

Ich habe festgestellt, dass es eine JavaScript-Funktion namens window.location.pathname gibt, die mir den Namen der Webanwendung (falls vorhanden) bringen kann. Ich könnte dies mit dem Rest der Route verketten und es sollte funktionieren.

Jetzt ist der Haken, das ist alles auf einer regulären HTML-Seite. Gibt es eine Möglichkeit, eine benutzerdefinierte Route zu diesen Skript-Tags mit grundlegenden JavaScript-Funktionen einzurichten? Oder irgendwelche anderen Ideen?

+0

Könnten Sie versuchen, ? –

+0

Klingt nach root-relativen Pfaden, so etwas wie '/ Content/Styles/ThemeForest/assets/js/vendors.js'. Gibt es einen Grund, warum Sie nicht einfach root-relative Pfade verwenden können? –

Antwort

0

Sie können etwas wie $script verwenden, fügen Sie einfach diese Codezeilen in Ihrem app.run oder an einem anderen Ort ein und rufen Sie sie mit einem Array der Routen der js-Dateien auf, die Sie laden möchten. Sie sagten, dass Sie den Web-Anwendung Namen bekommen können, so geben Sie einfach den Namen des App mit dem Pfad des Skripts verketteten:

var dependenciesLoadingFactory = function(deps) { 
    return ['$q', '$rootScope', function($q, $rootScope) { 
     var deferred = $q.defer(); 
     $script(deps, function() { 
      $rootScope.$apply(function() { deferred.resolve(); }); 
     }); 
     return deferred.promise; 
    }]; 
}; 
-1

Wenn Sie eine Verknüpfung zu einem Quelldokument mit einem Verzeichnis starten oder den Dateinamen selbst (Wie bei Ihrer Frage) sucht die Suche danach im selben Ordner, in dem sich Ihre aktuelle Datei befindet (dies wäre die HTML-Datei, die Ihre Skript-Tags enthält). Sie können auch Links zu Dateien in übergeordneten Verzeichnissen relativieren zu Ihrem aktuellen Standort, wie folgt:

../file.js 

Sie können alternativ zu einem Pfad verknüpfen, der mit einem sl beginnt Asche:

/dir/to/your/file.js 

Dies wird im Stammverzeichnis Ihrer Seite, was bedeutet, das Verzeichnis Ihrer Domain oder Subdomain Punkte Beginn der Suche. Sie können keine Verknüpfung zu Dateien herstellen, die sich oberhalb Ihres Stammverzeichnisses befinden.

Schließlich, wenn Sie Ihre Dateien auf einem anderen Server, stellen Sie sicher, dass Sie den vollständigen Pfad einschließlich des http: // Schnipsel:

http://example.website.com/dir/file.js 

Unter normalen Umständen gibt es wirklich keinen Grund, von diesen abweichen sollte Methoden, aber wenn Sie unbedingt ein Verzeichnis dynamisch festlegen müssen, schlage ich vor, Sie verwenden PHP, weil es serverseitig und daher schneller für den Benutzer und verfügbar ist, wenn sie Javascript deaktiviert haben (das ist wichtig, wenn Sie mit anderen Dateien wie Stil verknüpfen) Blätter auf diese Weise):

<?php $directory = '/dir/'; ?> 
<script src="<?php print $directory; ?>file.js"></script> 

Damit dies funktioniert, muss auf Ihrem Server php laufen.

+0

Ich möchte Feedback darüber erhalten, warum dieser Beitrag abgelehnt wurde.Der Autor der Frage fragte für andere als Javascript-Ideen in ihrem ursprünglichen Beitrag. – TheThirdMan

Verwandte Themen