Frage

Ich versuche, einen Skript Verweis auf jQuery in meiner Masterseite hinzufügen, so dass es für jede Seite zu arbeiten. Es sieht derzeit wie folgt aus

<script type="text/javascript" src="jquery.js"></script>

Das Problem ist, dass der Weg zur Ausführung aspx Seite ist immer relativ, so wird dies nur funktionieren, wenn die „jquery.js“ Datei im selben Ordner befindet. Damit es funktioniert Ich habe die Linie zu ändern:

<script type="text/javascript" src="../../jquery.js"></script>

Das ist natürlich weniger als ideal, weil es nur für Seiten arbeiten, die zwei Ebenen tief aus dem Stammordner sind. Wenn ich die folgende versuchen, wirft IIS eine Fehlermeldung über einen unerwarteten Charakter.

<script runat="server" type="text/javascript" src="~/jquery.js"></script>

Irgendwelche Ideen?

EDIT: Ich habe vergessen, wie auch zu erwähnen, dass das Skript im Kopf-Tag sein muss

Die aktuelle Top-Antwort wirft ein „ ASP.NET Ajax clientseitige Rahmen laden fehlgeschlagen. “ Fehler, wenn ich es auf meine Masterseite hinzufügen. Sein von Javascript geworfen und nicht die .NET-Compiler. Wenn ich die Scriptmanager auf den Kopfabschnitt bewegen, wo es sein soll ich einen Compiler-Fehler über das Script in einem Formular-Tag sein muß.

Die dritte Antwort wirft eine " Illegale Zeichen im Pfad. " Ausnahme vom Compiler

EDIT 2:. Wenn ich diese Zeile, um meinen Kopf-Tag hinzufügen bekomme ich diesen Fehler von IIS

Die Controls-Auflistung kann nicht geändert werden, da die Steuercodeblöcke enthält (d <% ...%>)

GELöST: Ich nahm die bearbeitete Antwort von der Antwort unten und legt es in einem asp: Content -Element

War es hilfreich?

Lösung

könnten Sie ein ScriptManager :

<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Scripts>
        <asp:ScriptReference Path="~/jquery.js" />
    </Scripts>
</asp:ScriptManager>

EDIT: Wenn Sie absolut müssen Sie dies in Ihrem <head> Abschnitt, könnten Sie so etwas wie tun:

<head>
    <script type="text/javascript" 
        src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script>
</head>

EDIT 2: Nach den Kommentaren, wenn Sie beobachten, dass

  

Die Controls-Auflistung kann nicht geändert werden, da die Steuercode-Blöcke enthält (d.h. <% ...%>)

Sie müssen möglicherweise die oben ändern, um die Datenbindung Syntax:

<head>
    <script type="text/javascript" 
        src="<%# Page.ResolveClientUrl("~/jquery.js") %>"></script>
</head>

Andere Tipps

Versuchen <%# statt <%= in Master-Seite unter Kopfbereich

<script type="text/javascript" 
        src="<%# ResolveUrl("~/YourScriptFolder/YourJQueryOrJavascript.js") %>">
</script>

Dann in Code hinter der Master-Seite unter Page_Load Ereignisse

Page.Header.DataBind();

Jetzt sind Sie gut zu gehen entweder mit jQuery und JavaScript sowie CSS nur brauchen, um Ihren Weg in ResolveUrl zu ändern, die Sie CSS, JavaScript, jQuery.

behandeln Datei wollen

Wenn Sie nicht asp uns gehen: Script oder absolute Pfade, dann können Sie es wie folgt tun:

<script runat="server" type="text/javascript" 
  src='<%= Page.ResolveUrl("~/jquery.js") %>'></script>

Ich weiß nicht, ob ihr die Lösung für Ihr Problem oder nicht gefunden. Ich war vor dem gleichen Problem und um herauszufinden, gehen Nüsse, warum ich erhalte „jQuery ist nicht definiert“ Fehler auf den Plugins i verwenden. Ich habe versucht, alle Lösungen erhalte ich aus dem Internet, aber ohne Glück überhaupt.

Aber, plötzlich etwas Spritzen auf meinem Kopf, dass die Skriptdateien sein kann, um sein sollte. Also zog ich die Jquery referece in dem ersten Position und alles anfängt wie Charme zu arbeiten.

Jungs Denken Sie daran, wenn Sie irgendwelche Plugins mit Jquery verwenden, stellen Sie sicher, dass Sie das folloing, um auf diese fiels der Einstellung Referenz verwenden.

  1. Verweis auf die jQuery-Bibliothek
  2. Verweis auf die anderen nachfolgenden Plug-in-Bibliotheken und so weiter ...

z.

  1. "script src =" js / jquery-1.3.2.min.js“type = "text / javascript" ...
  2. "script src =" js / jqDnR.min.js“type = "text / javascript" ...
  3. "script src =" js / jquery.jqpopup.min.js“type = "text / javascript" ...
  4. "script src =" js / jquery.bgiframe.min.js“type = "text / javascript" ...

Achten Sie stets darauf, die jquery Bezug auf die erste Stelle setzen müssen und dann die nachfolgenden Bibliotheken.

Hope, das Ihr Problem löst vor allem, wenn Sie mit Masterpages verwenden. Es ist sehr seltsam, dass es egal funktioniert in welcher Reihenfolge Sie verwenden, wenn Sie aber nicht Masterpages verwenden, wenn Sie das tun, dann requres es irgendwie die richtige Reihenfolge.

Viel Glück und glücklich Codierung,

Vincent D'Souza

Blick auf Wie ein Root-to Run‚/‘. Dies sollte alle Fragen im Zusammenhang mit ungelösten .js Dateipfade beheben. Sie rekonfigurieren grundsätzlich den VS Dev-Server Ihre Anwendung als localhost:port/ zum regulären localhost:port/application name/ macht Namensauflösung funktioniert auf die gleiche Art und Weise, wie es funktioniert auf IIS im Gegensatz zu laufen.

<script type="text/javascript" src="/full/path/to/jquery.js"></script>

Wenn dieser Script-Tag direkt an den Browser geht, dann unwahrscheinlich, dass Sie können dort Ihre Website Wurzel ersetzen. Zumindest nicht auf dem Server. So können Sie:

  1. Bereitstellen Website zu dem Stamm-Domäne benennen und verwenden absolute Pfade (Einfachste Lösung).
  2. Fügen Sie diese Verbindung mit dem Server-Steuerung.
  3. Preprocess resultierende HTML vor Senden sie an den Client (mit HttpResponse.Filter).

Sie können auch mit HTML-Tag:

<base href="http://www.domain.com"></base>  

und dann alle Links in Header-Bereich sind in Bezug auf Basisadresse:

<script type="text/javascript" src="scripts/jquery.js"></script>

Es ist oft nützlich, wenn Sie mehrere publishing Ziele haben, wie lokale dev Web-Server, Demo-Server, etc. Sie ersetzen nur, dass die Basis-URL.

<body>
<script language="javascript" src='<%= this.ResolveClientUrl("~/full/path/to/jquery.js") %>' type="text/javascript"></script>
</body>

Für absoluten Pfad der Datei für jede Seite verwendet es folgende:

<script type="text/javascript" src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script> 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top