次の内容の global.js という名前の JavaScript ファイルを作成しました。
;
var Globals =
{
function getAppRoot() {
if (typeof (jQuery) !== "undefined")
return $("#ApplicationRoot").attr("href");
};
appRoot : getAppRoot();
};
次に、HTML ファイル (ASP.NET MVC プロジェクト) に、次のように JavaScript ファイルを含めました。
<link rel = "home" id = "ApplicationRoot"
href = "@Url.Content("~/")" />
<script src = "@Url.Content("~/Scripts/jquery-1.8.3.js")"
type="text/javascript"></script>
<script src = "@Url.Content("~/Scripts/global.js")"
type = "text/javascript"></script>
そして、HTML ファイルの SCRIPT タグ内に、次のように記述します。
$(document).ready(
function() {
alert("Globals.appRoot = " + window.Globals.appRoot);
} );
ただし、コードを実行すると、Globals
未定義であることがわかります。
更新 ありがとうございます。等号 (代入演算子) を忘れていたことに気付きました。
私が今観察しているもう1つの重要なこと(完全には確信が持てませんでした)は、次のとおりです。あなたのコメントから、オブジェクト宣言は次のようになると想定しています:
var foo = { /* cannot have anything that does not adhere to the bar : gar syntax? */ }
別の更新
問題は次のとおりです。appRoot
そうしてメソッドを作成した場合:
var Globals =
{
appRoot : function() { }
};
またはそのように:
var Globals =
{
appRoot : function getAppRoot() { }
}
appRoot
クライアントは、次の一連の括弧を使用して呼び出す必要があります。appRoot
メソッドではなくプロパティにしたいと思います。それ、どうやったら出来るの?
最終更新 コードを次のように変更しました。
// globals.js
// I understand that the starting semi-colon is not
// required. I'd left it in for reasons that it is used
var Globals =
{
appRoot : $("#ApplicationRoot").attr("href");
};
// inside the HTML file in $(document).ready();
if (tyepof(Globals) == "undefined" || Globals == null)
alert("Globals is either undefined or null");
else
alert("Globals.appRoot = " + Globals.appRoot);
Globals is either undefined or nullという警告メッセージが表示されます。
ANSWER
では、最後に。ご助力いただきありがとうございます。オブジェクトの宣言/初期化で、別の軽微な構文エラーが発生しましたGlobals
。
appRoot
はオブジェクトのメンバーであり、オブジェクト初期化構文を使用していたため、 の宣言をセミコロンで終了するべきではありませんでしたappRoot
。代わりに、カンマを使用するか、最後 (および の唯一のメンバー) であるため、終了文字を付けずにそのままにしておく必要がありましたGlobals
。