最近搞一个项目,后端使用了struts2,这样的话,会产生页面的相对路径问题,比如你请求/base/user/user.action则返回到页面之后,页面的相对路径是/base/user/,如果访问/base/department/department.action,则页面的当前相对路径是/base/department/,这样的话对资源文件的路径造成不便。为了解决这个问题,我们使用了<base>标签,即:
<base href="http://ipAddress:port/appHome/" />, 
这样的话,所有资源文件和页面链接都可以采用相对appHome的这个固定的目录。
今天在ie下面测了一下,发现所有JavaScript里面的通过document.location.href 来跳转的功能都出错了。 document.location.href不能有效识别base所设的当前路径,导致路径不对。其他浏览器没有这样的问题。
我的测试环境是ie10,用ie8模式也一样。大家有没有遇到这样的问题?我觉得这问题如果是个问题的话,我发现的也太晚了。好歹我做web也6年有余。如果是个问题,你们是怎么解决的。谢谢!

解决方案 »

  1.   

    貌似也遇到过这样的问题  记得是用隐藏的form表单了   
      

  2.   

    很简单,用JS取一个BASE路径下的图片或JS文件的HREF,截掉文件名就是BASE目录的地址了。
    比如:
    <base href="http://avatar.profile.csdn.net/A/9/7/" />
    <img src="2_theforever.jpg" id="theforeverOnCSDN"><script type="text/javascript">
    alert(document.getElementById("theforeverOnCSDN").href);
    </script> 
      

  3.   

    才发现随后发的没发出来<base href="http://avatar.profile.csdn.net/A/9/7/" />
    <img src="2_theforever.jpg" id="theforeverOnCSDN">
    <script type="text/javascript">
    alert(document.getElementById("theforeverOnCSDN").href.replace("2_theforever.jpg",""));
    </script> 
      

  4.   

    好吧 看来这的确是个问题。我的解决方法是,不用document.location.href, 而是自己写了一个函数toLocation