星空网 > 软件开发 > Java

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

  上周五的时候遇到一个问题,平时做项目的时候一直使用的是火狐浏览器,上周完成了一个小论坛的功能,因为访问论坛是不需要的用户登录的,只有发帖和回复的时候才需要用户登录,所以就在系统中加了一个**,发帖时候如果没有登录就跳转到登录页面,功能完成以后在火狐浏览器下面使用完全没问题,平时很少使用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";

使用这种方式之后在本地测试不管是IE还是火狐或者谷歌都没问题了,以为问题解决了,然后就在服务器上测试,但是到了服务器上之后所有的浏览器全部不好使了,都是点击一下就会出现登录页面,很郁闷有没有,然后就继续在网上找答案,但是很多都是直接复制上面的方法,根本没有什么实质性的作用,然后在博客园还有CSDN发帖询问,但是也没有得到什么有用的信息,可能大神们都在code/code/code.......,然后就一直拖到了今天,重新看别人发帖询问时的回复,有人说是使用绝对路径可以解决,然后就抱着试一试的心态改了一下,然后就成功了。

  解决办法就是使用绝对路径,所以上面的url就可以改成“/项目名称/xxx/xxxAction_xxx.do”,经测试在服务器和本地的IE和火狐还有谷歌都是适应的,在此记录一下,备忘一下,也希望能帮到其他遇到这个问题的人,有问题的地方欢迎大神们指出。

  




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

关键词:ie

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

全球物流:https://www.ikjzd.com/w/3300
安克:https://www.ikjzd.com/w/3301
alipay:https://www.ikjzd.com/w/3302
Esty:https://www.ikjzd.com/w/3303
google adsense:https://www.ikjzd.com/w/3304
Shop pay:https://www.ikjzd.com/w/3305
速卖通半托管爆单,一周紧急增开3地仓库:https://www.goluckyvip.com/news/218211.html
速卖通半托管爆单,一周紧急增开3地仓库:https://www.xlkjsw.com/news/90214.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流