マスターページでjQueryにスクリプト参照を追加して、どのページでも機能するようにしています。現在このように見えます
<script type="text/javascript" src="jquery.js"></script>
問題は、パスが常に実行中のaspxページに相対的であるため、「jquery.js」ファイルが同じフォルダーにある場合にのみ機能することです。動作させるには、行を次のように変更する必要があります。
<script type="text/javascript" src="../../jquery.js"></script>
ルートフォルダーから2レベルの深さのページでのみ機能するため、これは明らかに理想的ではありません。以下を試してみると、IISは予期しない文字に関するエラーをスローします。
<script runat="server" type="text/javascript" src="~/jquery.js"></script>
何か案は?
編集:スクリプトをheadタグに含める必要があることも忘れていました
現在のトップアンサーは、マスターページに追加すると「ASP.NET Ajaxクライアント側フレームワークのロードに失敗しました。」エラーをスローします。 .Netコンパイラではなくjavascriptからスローされます。 ScriptManagerをあるべきヘッドセクションに移動すると、ScriptManagerがフォームタグ内にある必要があるというコンパイルエラーが発生します。
3番目の答えは、コンパイラから「不正な文字がパスにあります。」例外をスローします
編集2:ヘッドタグにその行を追加すると、IISからこのエラーが発生します。
コントロールにコードブロックが含まれているため、Controlsコレクションを変更できません(つまり、<%...%>)
解決しよう:以下の回答から編集した応答を取得し、asp:ContentPlaceHolder要素内に配置しました
ScriptManager
を使用できます。
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Path="~/jquery.js" />
</Scripts>
</asp:ScriptManager>
EDIT:あなたが絶対にあなたの<head>
セクションでは、次のようなことができます。
<head>
<script type="text/javascript"
src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script>
</head>
EDIT 2:コメントによれば、
コントロールにコードブロック(<%...%>)が含まれているため、Controlsコレクションを変更できません
データバインディング構文を使用するには、上記の変更が必要になる場合があります。
<head>
<script type="text/javascript"
src="<%# Page.ResolveClientUrl("~/jquery.js") %>"></script>
</head>
<%#
の代わりに <%=
ヘッドセクションの下のマスターページ
<script type="text/javascript"
src="<%# ResolveUrl("~/YourScriptFolder/YourJQueryOrJavascript.js") %>">
</script>
次に、マスターページのコードビハインドのPage_Load
イベント
Page.Header.DataBind();
これで、CSS、JavaScript、jQueryを処理するResolveUrl
のパスを変更するだけで、jQueryとJavaScript、CSSのいずれかを使用できます。
Asp:ScriptManagerまたは絶対パスを使用しない場合は、次のように実行できます。
<script runat="server" type="text/javascript"
src='<%= Page.ResolveUrl("~/jquery.js") %>'></script>
あなたが問題の解決策を見つけたかどうかはわかりません。私は同じ問題に直面していたので、使用しているプラグインで「jQuery is undefined」エラーが発生する理由を理解しようと思いました。私はインターネットから得たすべてのソリューションを試しましたが、運はまったくありませんでした。
しかし、突然、スクリプトファイルが整頓されているはずの何かが私の頭に浮かびます。そのため、jqueryの参照を最初の位置に移動すると、すべてが魅力のように機能し始めます。
Jqueryでプラグインを使用している場合は、これらのフィールドへの参照を設定する次の順序を使用してください。
例えば。:
Jquery参照を最初に配置し、次にライブラリに配置する必要があることを常に確認してください。
特に、MasterPagesで使用する場合は、これで問題が解決することを願っています。 MasterPagesを使用しない場合、どの順序を使用しても機能することは非常に奇妙ですが、使用する場合は、適切な順序が必要です。
幸運と幸せなコーディング、
ビンセント・ドソウザ
ルート「/」の実行方法 を見てください。これにより、未解決の.js
ファイルパスに関するすべての問題が修正されます。基本的にVS Devサーバーを再構成して、通常のlocalhost:port/
ではなくlocalhost:port/application name/
としてアプリケーションを実行し、名前解決をIISと同じように機能させます。
<script type="text/javascript" src="/full/path/to/jquery.js"></script>
このスクリプトタグがブラウザに直接送られる場合、サイトのルートをそこで置き換えることはできません。少なくともサーバーにはありません。だからあなたはできる:
<base> HTMLタグも使用できます。
<base href="http://www.domain.com"></base>
ヘッダーセクションのすべてのリンクはベースアドレスに関連しています:
<script type="text/javascript" src="scripts/jquery.js"></script>
ローカルdev Webサーバー、デモサーバーなど、複数の公開先がある場合に便利です。ベースURLを置き換えるだけです。
任意のページのファイルの絶対パスには、次を使用します。
<script type="text/javascript" src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script>
<body>
<script language="javascript" src='<%= this.ResolveClientUrl("~/full/path/to/jquery.js") %>' type="text/javascript"></script>
</body>