none
再问一个关于绝对路径的问题 RRS feed

  • 问题

  • 在调用lightbox的时候,引用的js的里面有这样一段代码。
    LightboxOptions = Object.extend({
    fileLoadingImage: 'lightbox/images/loading.gif',
    fileBottomNavCloseImage: 'lightbox/images/closelabel.gif',
    ...
    })

    我打算把上面的相对路径改为绝对路径,试了一下,实现是实现了,但是感觉不好。
    改后的代码:
    fileLoadingImage: document.location.href.replace(document.location.pathname, "/") + document.location.pathname.split("/")[1] + '/lightbox/images/loading.gif',
    fileBottomNavCloseImage: document.location.href.replace(document.location.pathname, "/") + document.location.pathname.split("/")[1] + '/lightbox/images/closelabel.gif',

    大家有什么好的方法吗?

    2009年10月23日 3:14

答案

  • 简单的办法:
    在最前面定义一个根路径
    var SiteRoot = "<%=Request.ApplicationPath=="/"?"":Request.ApplicationPath%>";

    然后写

    LightboxOptions = Object.extend({
    fileLoadingImage: SiteRoot + 'lightbox/images/loading.gif',
    fileBottomNavCloseImage: SiteRoot + 'lightbox/images/closelabel.gif',
    ...
    })

    这样,以后想换成什么就直接在SiteRoot上做文章即可
    【孟子E章】
    2009年10月23日 15:15
    版主

全部回复

  • 将引用的文件更改为aspx的 如 lightbox.js.aspx
    在顶部增加一行 <%@ Page language="c#" ContentType="text/javascript" AutoEventWireup="false"%>

    然后用<%=Request.ApplicationPath%>/lightbox/images/loading.gif的方式
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://blog.tanging.net
    2009年10月23日 4:54
    版主
  • 将引用的文件更改为aspx的 如 lightbox.js.aspx
    在顶部增加一行 <%@ Page language="c#" ContentType="text/javascript" AutoEventWireup="false"%>

    然后用<%=Request.ApplicationPath%>/lightbox/images/loading.gif的方式
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://blog.tanging.net

    好像比较复杂。。。没有更简单的方法吗?
    2009年10月23日 5:05
  • 简单的办法:
    在最前面定义一个根路径
    var SiteRoot = "<%=Request.ApplicationPath=="/"?"":Request.ApplicationPath%>";

    然后写

    LightboxOptions = Object.extend({
    fileLoadingImage: SiteRoot + 'lightbox/images/loading.gif',
    fileBottomNavCloseImage: SiteRoot + 'lightbox/images/closelabel.gif',
    ...
    })

    这样,以后想换成什么就直接在SiteRoot上做文章即可
    【孟子E章】
    2009年10月23日 15:15
    版主
  • 你可以将这个定义为常量:
    document.location.href.replace(document.location.pathname, "/") + document.location.pathname.split("/")[1] + "/"
    Microsoft ASP.NET MVP
    2009年10月25日 14:38
    版主
  • 简单的办法:
    在最前面定义一个根路径
    var SiteRoot = "<%=Request.ApplicationPath=="/"?"":Request.ApplicationPath%>";

    然后写

    LightboxOptions = Object.extend({
    fileLoadingImage: SiteRoot + 'lightbox/images/loading.gif',
    fileBottomNavCloseImage: SiteRoot + 'lightbox/images/closelabel.gif',
    ...
    })

    这样,以后想换成什么就直接在SiteRoot上做文章即可
    【孟子E章】

    var SiteRoot = "<%=Request.ApplicationPath=="/"?"":Request.ApplicationPath%>";
    这个是写在哪里?JS文件里还是ASPX文件里?
    2009年10月26日 5:54
  • 简单的办法:
    在最前面定义一个根路径
    var SiteRoot = "<%=Request.ApplicationPath=="/"?"":Request.ApplicationPath%>";

    然后写

    LightboxOptions = Object.extend({
    fileLoadingImage: SiteRoot + 'lightbox/images/loading.gif',
    fileBottomNavCloseImage: SiteRoot + 'lightbox/images/closelabel.gif',
    ...
    })

    这样,以后想换成什么就直接在SiteRoot上做文章即可
    【孟子E章】

    var SiteRoot = "<%=Request.ApplicationPath=="/"?"":Request.ApplicationPath%>";
    这个是写在哪里?JS文件里还是ASPX文件里?

    写在ASPX的<script>标签里面,也就是用<% %>动态声称一个<script>中的变量值。
    Microsoft ASP.NET MVP
    2009年10月26日 6:29
    版主
  • <script type="text/javascript" >
        var SiteRoot = "<%=Request.ApplicationPath=="/"?"":Request.ApplicationPath%>";
    </script>
    写成这样了,但是在[":Request.ApplicationPath%>";]处有绿色的提示:缺少;号。
    运行结果好像没问题。不知道会不会有什么隐患?
    2009年10月26日 6:46