a标签的伪协议在ie下的bug解决与总结
作者:网络转载 发布时间:[ 2015/6/9 13:47:00 ] 推荐标签:软件测试管理 缺陷管理
有个同事问了我一个项目里的问题 ,即一个献花功能,每次点击时会有个jsonp跨域的处理,用的jquery1.7.2
代码是这样的
$("#id a").click(funciton() {
$.ajax({
type : "get",
async:false,
url : "http://screen.app.7k7k.com/awardflower?flowerid=38229639&form=4&callback=success_jsonpCallback",
dataType : "jsonp",
success : function(json){
alert(json);
},
error:function(){
alert('fail');
}
});
});
这段代码在chrome, firefox都是对的。但在ie下会alert('fail'),
起初我一直以为是jquery的兼容问题,但经过很多测试发现不是此问题,那么排除jquery本身的问题,再看看自身写的ajax代码,将这段代码单独拿出执行,也没问题。
再才可能是和click相关,我们是click的<a>标签。
<a> 标签上 , <a href="javascript:;" > , 我们通常会这样写来阻止a的默认事件, 难道是这个问题? 排除性的改为<a href="#" > , 果然可以了。
但href=#会默认跳到top , 故改称href="#bottom" , 达到了之前相同的效果 ,
但为什么href="javascript:;" 或者 href="javascript:void(0);" 在ie下都会alert("fail")呢,这个应该是ie为协议的bug , 即如果不return false, 所有请求都会abort掉,所以我又将代码恢复用javascript:在onclick事件里面 增加了一个renturn false. 果然也解决了问题。
故以后要小心<a>标签为协议的坑。
1. 尽量减少通过<a>标签触发ajax或者jsonp,可以改为span或者其他的
2.如果必须要用<a>标签 ,请在使用javascript:的同时, 要在click的方法里面return false. 当然如果允许也可以 href="#bottom"。
另:在碰到一些非常怪的bug ,排除法是。
希望可以很多朋友看到blog可以减少改坑。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11