今天项目需求,我在项目中使用backspace可以在input中进行删除事件,但是不能让backspace触发回退历史上一级的事件
1 最开始我是准备直接监听backspace的keydown事件,直接禁用的,后期才发现,页面上有input是需要执行删除事件的这个也是需要判断的,这个时候是不能进行屏蔽的event.returnValue = true
,后期才发现如果想禁用回退,也需要禁用alt+<-
,还有alt+->
这边直接整合了一个版本,避免以后再次使用搜索。
2 jq中event.which
返回: Number
描述: 针对键盘和鼠标事件,这个属性能确定你到底按的是哪个键。
event.which
将 event.keyCode
和 event.charCode
标准化了。推荐用 event.which
来监视键盘输入。更多细节请参阅: event.charCode on the MDC
.
event.which
也将正常化的按钮按下(mousedown
和 mouseupevents
),左键报告1
,中间键报告2
,右键报告3
。使用event.which
代替event.button
。所以代码中的没有出现event.keyCode
3 万恶的ie,我这边主要在页面主框架页面调用了checkBack()
,以为就好了,界面在页面中的iframe
中还是会触发回退事件,结果我在第二级子页面框架中也调用了checkBack()
,这边效果才好,在谷歌中其他按钮事件好像就禁用了,但是在ie
中还是有部分问题,第一次认识到iframe
其实内部回退机制和在主框架中的回退机制不同,这边之前只把它当作普通标签对,真的对不起他啊.还有在div中其实也可触发回退事件,我感觉我的真的是太乐观了。
4 上完整代码:
1 | //页面上进行调用 |
5 后续更新
我最初在需要禁用的主页面框架中添加的是如下代码
1 | //版本一 |
然后在谷歌中页面大部分都好了,流程中的iframe也不会乱跳,但是在ie中就是不听话咯,所以我想了一个比较笨的方法,每个页面都添加了checkBack()
,结果在ie9中点击iframe空白处还是会触发iframe
回退,这边我尝试修改页面跳转方式,这边还是有些问题,不过在我本机的ie11中点击流程的iframe
空白处,暂时没有触发回退事件,这边希望之后找到更好的解决办法,再来更新一波。