[英]ASP.NET MVC routing - loading .js scrips dynamically
嘗試從JavaScript文件內部(來自Bootstrap模板)在_Layout.cshtml
頁面上動態加載JavaScript插件腳本。 我在腳本中更改了PLUGINS_PATH
,如下所示:
// Declared at top of script
var PLUGINS_PATH = './Content/plugins/';
// ... for each plugin script - e.g
jQuery().themeLoadPlugin(["jPanelMenu/jquery.jpanelmenu.min.js", "jRespond/js/jRespond.js"], [], initjPMenu);
// Load plugin
// --------------------------------
themeLoadPlugin: function(js, css, callback, placement) {
jQuery.ajaxPrefilter( "script", function( s ) {
s.crossDomain = true;
});
if (js) {
var progress = 0;
var internalCallback = function () {
// Complete
if (++progress === js.length) {
$.each(css, function(index, value) {
jQuery('head').prepend('<link href="' + PLUGINS_PATH + value + '" rel="stylesheet" type="text/css" />');
});
if (callback && typeof(callback) === "function") {
callback();
}
}
};
if (placement === undefined) {
$.each(js, function(index, value) {
$.getScript(PLUGINS_PATH + value, internalCallback);
});
}
else if (placement === 'append') {
$.each(js, function(index, value) {
jQuery('script[src*="bootstrap.min.js"]').after('<script src="' + PLUGINS_PATH + value + '"></script>');
internalCallback();
});
}
}
}
上面的內容適用於索引頁面-例如應用程序的根目錄http://localhost:1234/
-但如果我然后瀏覽到另一個頁面,則鏈接顯然會因為尋找的內容而中斷-例如在“聯系”頁面上: http://localhost:1234/Home/Content/plugins/jPanelMenu/jquery.jpanelmenu.min.js
如果我將插件路徑更改為: PLUGINS_PATH = '~/Content/plugins/';
然后它們在每個頁面上顯示以下內容:
http://localhost:1234/~/Content/plugins/jPanelMenu/jquery.jpanelmenu.min.js
希望我已經充分解釋了這個問題,感謝您的幫助。
代字號(〜)在script標簽的src屬性中不起作用,您只會在找到的路徑中得到一個文字〜。 嘗試:
PLUGINS_PATH = '/Content/plugins/'
像您最初那樣使用單個點來創建相對於當前目錄的路徑,再次發現該路徑將隨您瀏覽而改變。 設置腳本源時:
/相對於根
./相對於包含當前文件的目錄
../相對於當前目錄的父目錄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.