Ich versuche, auf meiner Masterseite einen Skriptverweis auf jQuery hinzuzufügen, damit er für jede Seite funktioniert. Es sieht derzeit so aus
<script type="text/javascript" src="jquery.js"></script>
Das Problem ist, dass der Pfad immer relativ zur ausführenden Aspx-Seite ist, sodass dies nur funktioniert, wenn sich die Datei "jquery.js" im selben Ordner befindet. Damit es funktioniert, muss ich die Zeile ändern in:
<script type="text/javascript" src="../../jquery.js"></script>
Dies ist offensichtlich nicht ideal, da es nur für Seiten funktioniert, die zwei Ebenen tief vom Stammordner entfernt sind. Wenn ich Folgendes versuche, gibt IIS einen Fehler über ein unerwartetes Zeichen aus.
<script runat="server" type="text/javascript" src="~/jquery.js"></script>
Irgendwelche Ideen?
EDIT: Ich habe auch vergessen zu erwähnen, dass das Skript im Head-Tag sein muss
Die aktuelle Top-Antwort löst den Fehler "Das clientseitige ASP.NET Ajax-Framework konnte nicht geladen werden " aus, wenn ich es meiner Masterseite hinzufüge. Es wird aus Javascript und nicht aus dem .Net-Compiler geworfen. Wenn ich den ScriptManager in den Kopfbereich verschiebe, in dem er sich befinden soll, wird ein Kompilierungsfehler darüber angezeigt, dass sich der ScriptManager in einem Formular-Tag befinden muss.
Die dritte Antwort löst eine Ausnahme " Unzulässige Zeichen im Pfad " vom Compiler aus
BEARBEITEN 2: Wenn ich diese Zeile zu meinem Head-Tag hinzufüge, erhalte ich diesen Fehler von IIS.
Die Controls-Auflistung kann nicht geändert werden, da das Steuerelement Codeblöcke enthält (dh <% ...%>).
Gelöst: Ich habe die bearbeitete Antwort aus der folgenden Antwort genommen und in ein asp: ContentPlaceHolder- Element eingefügt
quelle
Antworten:
Sie könnten verwenden
ScriptManager
:<asp:ScriptManager ID="ScriptManager1" runat="server"> <Scripts> <asp:ScriptReference Path="~/jquery.js" /> </Scripts> </asp:ScriptManager>
EDIT: Wenn Sie dies in Ihrem Bereich unbedingt benötigen
<head>
, können Sie Folgendes tun:<head> <script type="text/javascript" src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script> </head>
EDIT 2: Laut den Kommentaren, wenn Sie das beobachten
Möglicherweise müssen Sie die obigen Angaben ändern, um die Datenbindungssyntax zu verwenden:
<head> <script type="text/javascript" src="<%# Page.ResolveClientUrl("~/jquery.js") %>"></script> </head>
quelle
base href
?Versuchen Sie es
<%#
statt auf der<%=
Masterseite im Kopfbereich<script type="text/javascript" src="<%# ResolveUrl("~/YourScriptFolder/YourJQueryOrJavascript.js") %>"> </script>
Dann auf der Seite Code hinter dem Master unter
Page_Load
EreignisJetzt können Sie entweder mit jQuery und JavaScript sowie mit CSS arbeiten. Sie müssen lediglich Ihren Pfad ändern, in
ResolveUrl
welcher Datei Sie CSS, JavaScript und jQuery verarbeiten möchten.quelle
Page.Header.DataBind();
Ich brauchte die Leitung, damit es für mich funktioniert, danke!runat="server"
Attribut auch demhead
Tag hinzufügen .Wenn Sie nicht zu uns gehen asp: ScriptManager oder absolute Pfade, können Sie dies folgendermaßen tun:
<script runat="server" type="text/javascript" src='<%= Page.ResolveUrl("~/jquery.js") %>'></script>
quelle
Ich weiß nicht, ob ihr die Lösung für euer Problem gefunden habt oder nicht. Ich hatte das gleiche Problem und war verrückt, um herauszufinden, warum ich bei den von mir verwendeten Plugins den Fehler "jQuery ist undefiniert" erhalte. Ich habe alle Lösungen ausprobiert, die ich aus dem Internet bekomme, aber überhaupt kein Glück.
Aber plötzlich spritzt mir etwas in den Sinn, dass die Skriptdateien in Ordnung sein sollten. Also habe ich den JQuery-Schiedsrichter auf die erste Position gebracht und alles funktioniert wie ein Zauber.
Denken Sie daran, Leute, wenn Sie Plugins mit jquery verwenden, stellen Sie sicher, dass Sie die folgende Reihenfolge verwenden, um Verweise auf diese Felder festzulegen.
z.B:
Stellen Sie immer sicher, dass Sie zuerst die jquery-Referenz und dann die nachfolgenden Bibliotheken angeben müssen.
Ich hoffe, dies löst Ihr Problem, insbesondere wenn Sie es mit MasterPages verwenden. Es ist sehr seltsam, dass es funktioniert, egal welche Reihenfolge Sie verwenden, wenn Sie keine MasterPages verwenden, aber wenn Sie dies tun, dann erfordert es irgendwie die richtige Reihenfolge.
Viel Glück und viel Spaß beim Codieren,
Vincent D'Souza
quelle
Schauen Sie sich an, wie ein Root "/" ausgeführt wird . Dies sollte alle Ihre Probleme bezüglich ungelöster
.js
Dateipfade beheben . Grundsätzlich konfigurieren Sie den VS Dev-Server so, dass Ihre Anwendung ausgeführt wird,localhost:port/
im Gegensatz zur normalenlocalhost:port/application name/
Namensauflösung, die auf IIS funktioniert.quelle
Verwenden Sie den absoluten Pfad der Datei für eine beliebige Seite wie folgt:
<script type="text/javascript" src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script>
quelle
<script type="text/javascript" src="/full/path/to/jquery.js"></script>
quelle
Wenn dieses Skript-Tag direkt an den Browser gesendet wird, können Sie dort wahrscheinlich nicht das Stammverzeichnis Ihrer Site ersetzen. Zumindest nicht auf dem Server. Also kannst du:
quelle
Sie können auch das HTML-Tag <base> verwenden:
<base href="http://www.domain.com"></base>
und dann sind alle Links im Header-Abschnitt relativ zur Basisadresse:
<script type="text/javascript" src="scripts/jquery.js"></script>
Dies ist häufig nützlich, wenn Sie mehrere Veröffentlichungsziele haben, z. B. einen lokalen Entwickler-Webserver, einen Demo-Server usw. Sie ersetzen einfach diese Basis-URL.
quelle
base href
programmgesteuert wechseln ?<body> <script language="javascript" src='<%= this.ResolveClientUrl("~/full/path/to/jquery.js") %>' type="text/javascript"></script> </body>
quelle