<div class="iteye-blog-content-contain" style="font-size: 14px"></div>
在web开发的时候,需要在浏览器上新开一个窗口的时候,选用的是window.open(url);但是当url是我们需要跳转的action的时候,IE浏览器就会出现问题,IE浏览器会从当前js或者jsp所在的目录的文件下面来获取这个action,导致action找不到。
例子: action 为aa/xxx.action,aa为该action的命名空间,
jsp或者js所在的路径为:WebRoot/public/index.jsp
window.open(aa/xxx.action)的时候,火狐,google浏览器都能正常访问到这个action,在IE下的请求路径变为 public/aa/xxx.action,这个时候action就找不到了,我们在写url路径的时候需要加上"<%=request.getContextPath()%>/" 例如 window.open(“<%=request.getContextPath()%>/aa/xxx.action");
在js中获取不到<%=request.getContextPath%> 我们可以在jsp中像这样定义一下,在js中就可以直接调用了
<script type="text/javascript">
var basePath = "<%=request.getContextPath()%>"
</script>
补充:
有时候需要在action后面添加参数的时候,如:"xxx.action?name="+name+"&id="+id
IE下会乱码,可以用encodeURI(url)来对url进行加工下