所以我运行了这个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文件的实际位置?
发布于 2010-02-03 07:16:42
JavaScript文件路径
在脚本中时,路径是相对于显示的页面的
为了简单起见,您可以打印出一个简单的js声明,如下图所示,并在所有脚本中使用此变量:
在2010年2月左右在StackOverflow上采用的解决方案:
<script type="text/javascript">
var imagePath = 'http://sstatic.net/so/img/';
</script>
如果您在2010年左右访问此页面,您可以只查看StackOverflow的html源,您可以在<head />
部分找到格式化为3行:)的这行代码
发布于 2010-12-14 23:18:02
在运行时使用jQuery解析DOM以获取引用它的'src‘属性,从而获得javascript文件的位置:
var jsFileLocation = $('script[src*=example]').attr('src'); // the js file path
jsFileLocation = jsFileLocation.replace('example.js', ''); // the js folder path
(假设您的javascript文件名为'example.js')
发布于 2012-03-17 16:33:23
正确的解决方案是使用css类,而不是在js文件中编写src。例如,不使用:
$(this).css("background", "url('../Images/filters_collapse.jpg')");
使用:
$(this).addClass("xxx");
并在页面中加载的css文件中写道:
.xxx {
background-image:url('../Images/filters_collapse.jpg');
}
https://stackoverflow.com/questions/2188218
复制相似问题