【发布时间】:2011-01-12 09:25:20
【问题描述】:
所以我正在运行这个 javascript,一切正常,除了背景图像的路径。它适用于我的本地 ASP.NET 开发环境,但在部署到虚拟目录中的服务器时不起作用。
这是在一个外部的.js文件中,文件夹结构是
Site/Content/style.css
Site/Scripts/myjsfile.js
Site/Images/filters_expand.jpg
Site/Images/filters_colapse.jpg
那么这就是包含js文件的地方
Site/Views/ProductList/Index.aspx
$("#toggle").click(function() {
if (left.width() > 0) {
AnimateNav(left, right, 0);
$(this).css("background", "url('../Images/filters_expand.jpg')");
}
else {
AnimateNav(left, right, 170);
$(this).css("background", "url('../Images/filters_collapse.jpg')");
}
});
我尝试过使用'/Images/filters_collapse.jpg',但这也不起作用;但是,如果我使用'../../Images/filters_collapse.jpg',它似乎可以在服务器上运行。
基本上,我希望拥有与 ASP.NET tilda 相同的功能 -- ~。
更新
外部 .js 文件中的路径是相对于它们所在的页面还是 .js 文件的实际位置?
【问题讨论】:
-
你的应用程序目录在开发中和服务端有区别吗?如果您的服务器显示“/MyApp”,则 Visual Studio 的内置 Web 服务器会将默认路径设置为“/”,您可能会有不一致的行为。尝试将您的 Visual Studio 路径设置为“/MyApp”
-
这正是问题所在!根据虚拟目录所在的位置,我不想每次从开发切换到生产时都更新我的 javascript...
-
看起来像这样,superexpert.com/blog/archive/2009/02/18/…,就是你要找的东西。
-
我正在使用 javascript 来动态更改 div 标签的背景图像。我想避免将代码放回母版页文件,因为它更干净自己的外部 .JS 文件...
-
对于 javascript,没有什么比 ~ 更好的了。你可以在 JS 中有一个辅助函数。例如,您将调用 MyJs.Url('Images/filters.jp') 并将此前缀添加到您的虚拟目录并返回字符串。这样,您只需在部署时将其更改一个位置。
标签: javascript html asp.net-mvc css path