日期:2014-05-16  浏览次数:20432 次

IE浏览器下当document.location.href遇到base就出问题了
最近搞一个项目,后端使用了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年有余。

如果是个问题,你们是怎么解决的。

谢谢!

------解决方案--------------------
貌似也遇到过这样的问题  记得是用隐藏的form表单了   
------解决方案--------------------
很简单,用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>