簡體   English   中英

ASP.NET MVC路由-動態加載.js腳本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM