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://www.youerw.com/" />
<img src="2_theforever.jpg" id="theforeverOnCSDN">
<script type="text/javascript">
alert(document.getElementById("theforeverOnCSDN").href);
</script>
我的解决方法是,不用document.location.href, 而是自己写了一个函数toLocation