2016-04-29 16 views
0

JavaScriptファイル(Bootstrapテンプレートから)内からJavaScriptプラグインスクリプトを_Layout.cshtmlページに動的に読み込もうとしています。次のように私は、スクリプト内でPLUGINS_PATHを変更した:ASP.NET MVCルーティング - .jsスクリプトを動的にロードする

// 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 

私は任意のヘルプは感謝、適切に問題を説明してきた希望。

答えて

0

スクリプトタグのsrc属性でチルダ(〜)が機能しない場合は、見つかったパスにリテラル〜が表示されます。試してみてください:

PLUGINS_PATH = '/Content/plugins/' 

あなたはもともとあなたはあなたの周りにナビゲートして変化します発見した、再び、現在のディレクトリに相対パスになりましたように、単一のドットを使用します。スクリプトのソースを設定する場合:

カレントディレクトリの親ディレクトリへの相対的な現在のファイル

を含むディレクトリへ

./相対ルート../へ

/相対