ASP.NET MVC路由-动态加载.js脚本
ASP.NET MVC routing - loading .js scrips dynamically
尝试在_Layout.cshtml
页面上动态加载JavaScript插件脚本-从JavaScript文件内部加载(来自Bootstrap模板)。我已将脚本中的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
希望我已经充分解释了这个问题,任何帮助都表示感谢。
波浪号(~)在脚本标记的src属性中不起作用,您只会在找到的路径中得到一个文字~。尝试:
PLUGINS_PATH = '/Content/plugins/'
像最初那样使用一个点可以使路径相对于当前目录,正如您所发现的,当您四处导航时,该目录也会发生变化。设置脚本源时:
/相对于根
相对于包含当前文件的目录
../相对于当前目录的父目录
相关文章:
- Wordpress插件根据需要加载js和css
- js文件未加载js控制台say's”;不允许加载本地资源”;
- Material Design Lite所有元素加载JS回调
- 动态重新加载JS
- 加载Js文件应用程序加载
- 按顺序异步加载JS脚本(等待上一个脚本完成)
- 如何加载js文件并在CEF上执行
- ASP.NET MVC路由-动态加载.js脚本
- 有没有办法只在必要时加载JS和CSS
- 加载 js 文件时出现 404 错误
- 根据用户屏幕大小加载 JS 或 PHP
- jQuery没有在ajax请求的脚本标记中加载js文件
- 加载 JS 函数加载时出现问题
- 不要为机器人(谷歌和其他)加载JS脚本以获得更好的性能
- 节点JS加载JS&ejb文件中的css文件
- Iron Router:在模板渲染后加载js脚本
- PhantomJS未从同一URL加载.js
- 重新路由时重新加载.js文件
- 在Express中转义/:路由以加载js和css
- CRON和页面加载JS