你的位置:首页 > 软件开发 > Java > 使用window.location.href跳转页面在IE和FF浏览器中路径不一致的问题总结

使用window.location.href跳转页面在IE和FF浏览器中路径不一致的问题总结

发布时间:2015-07-07 15:00:14
上周五的时候遇到一个问题,平时做项目的时候一直使用的是火狐浏览器,上周完成了一个小论坛的功能,因为访问论坛是不需要的用户登录的,只有发帖和回复的时候才需要用户登录,所以就在系统中加了一个**,发帖时候如果没有登录就跳转到登录页面,功能完成以后在火狐浏览器下面使用完全没问题,平时 ...

  上周五的时候遇到一个问题,平时做项目的时候一直使用的是火狐浏览器,上周完成了一个小论坛的功能,因为访问论坛是不需要的用户登录的,只有发帖和回复的时候才需要用户登录,所以就在系统中加了一个**,发帖时候如果没有登录就跳转到登录页面,功能完成以后在火狐浏览器下面使用完全没问题,平时很少使用IE浏览器,所以也没有在IE下面测试就直接放到服务器上测试了,在服务器上测试的时候还是使用的火狐,也没什么问题,但是我的一个同事去测试的时候就出现了问题,他是使用的IE浏览器,访问的时候明明是不需要用户登录的地方也跳转到了登录页面,功能完全都乱了,一直在跳转登录页面,就开始第一下进入不会出现登录页面,然后不管点击什么按钮都是登录页面。

  针对上面的问题我就开始调,开始的时候以为是我的**的问题,但是在使用火狐调的时候完全没问题,然后我就使用IE11开始测试,debug**,然后就发现了一个问题,第一次进入的时候**获取到的路径是/com/action.action,但是点击下一个连接的时候就变成了/com/com/action.action,每点击一个连接都会在方法的前面再加上一个/com,/com是我struts2的命名空间,但是在FF下面测试的时候**每次获取的路径都是/com/action.action,所以在FF下面运行时没问题的。

  然后就开始去问度娘怎么解决,度娘给出的答案是IE浏览器在解析window.location.href = url的时候,如果url是相对路径,那么IE浏览器解析的时候是会出现问题的,不能正确访问,由于当时比较着急,所以也就没想那么多,就继续针对这个问题再网上找解决办法,然后就发现了下面的方法:

function getContextPath() {  var pathName = document.location.pathname;  var index = pathName.substr(1).indexOf("/");  var result = pathName.substr(0,index+1);  return result; }var path = getContextPath();window.location.href = path+"/com/forumAction_list.do";

原标题:使用window.location.href跳转页面在IE和FF浏览器中路径不一致的问题总结

关键词:ie

ie
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。