javascript - 如何修改浏览器的a标签属性的默认触发机制?

查看:66
本文介绍了javascript - 如何修改浏览器的a标签属性的默认触发机制?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

已知a标签的执行顺序是onclick->href属性

当点击浏览器a标签的时候,浏览器的默认机制如下:

1、触发a的click事件

2、读取href属性的值

3、如果是URI则跳转

4、如果是javascript代码则执行该代码

如何改变这个机制,使得在onclick事件执行完毕时在去执行href属性的url进行跳转,其中onclick事件中的函数发送了ajax请求,根据返回值对href属性进行了修改

修改href属性后需要在当前浏览器新开页面

update------------------------2017.06.30------------------------------------

经测试,将ajax请求修改为同步执行,依然不能够使a标签的onclick函数执行完毕再去执行href的动作

究其原因,猜测可能是ajax修改为同步请求,会阻塞当前页面的其他操作,

但a标签的已经完成了点击,就继续执行了后续的href动作,而href动作此时是void(0),此时ajax的请求还没有返

回,也就是说ajax的同步请求并没有阻塞a标签的动作

期待更佳答案

经验证 标签的触发顺序是浏览器的默认行为,暂时还未找到办法可以修改

找个较接近的答案 ,结贴

解决方案

浏览器所有的是有的默认事件的禁用,都可以用 event.preventDefault() 来阻止,剩下的在你的回调函数里,你可以任意的去操作, 当然如果你需要兼容IE8及以下,可以兼容写法如下:

// event 为你的监听onclick回调函数中传递的参数
event.preventDefault ? event.preventDefault() : (event.returnValue = false);

这篇关于javascript - 如何修改浏览器的a标签属性的默认触发机制?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆