safari无限alert的bug
来源:互联网 发布:最靠谱的创业软件 编辑:程序博客网 时间:2024/04/29 14:43
今天写一个demo,在测试浏览的兼容性的时候,出现了一个很奇怪的bug。具体情形如下:
给页面上某个元素添加了一个onclick事件,事件里用了alert输出一个变量来查看结果的正确性。
结果在测试safari的时候,当关闭弹框的时候,居然又出现弹出了一个弹框,如此一直重复。。。
没办法,最后只能请出任务管理器,强行结束进程来关闭浏览器。
刚开始,我以为是自己程序出现了问题,所以把其它的部分注释掉了,只留下了必要的几句,结果还是一样。
于是我没有用鼠标点击而是试着用“enter”键来关闭,却没有此现象。
所以我就干掉了页面上所有的js,只留下以下的代码:
<script type="text/javascript"> document.getElementById('content').onclick = function() {alert('aaa');}</script>
可是问题依然如故。
我就想,这会不会是一个bug,所以google了一下"safari alert",还真是一个bug。。。
几经测试,终于发现了问题的表面原因:
当你点击alert对话框的时候,如果鼠标的坐标在添加了onclick事件的元素内,就会触发click事件,就像你的点击穿透了对话框,鼠标是点击在了该元素上。
以下是测试的代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>bug</title></head><body><div id='a' style='width:1000px;height:200px;background:#f00;'>aaa</div><div id='b' style='width:1000px;height:200px;background:#f0f;'>bbb</div><script type="text/javascript">document.getElementById('a').onclick = function(e) {alert('aaa');} //如果不给"#b"绑定click事件,当你单击‘#a’的click事件弹出的对话框的时候,是不会出现无限alert的bug的,但如果你绑定了,那就悲剧了。。。document.getElementById('b').onclick = function(e) {alert('bbb');}</script></body></html>
至于为什么点击穿透了对话框,只能去问浏览器的作者们了。。。
- safari无限alert的bug
- Safari恶性bug(iframe与onload,alert的冲突)
- safari的bug
- javascript的alert的bug
- bootstrap alert提示框的bug
- 有限的生命,无限的bug
- 一例flash在Safari浏览器显示异常的bug
- Jquery delegate 在iPhone的safari下有bug
- safari浏览器下 localStorage会报错的BUG
- androidpn-client 无限ReconnectionThread 的bug
- 又见Oracle BUG:Rman备份的alert错误提示
- safari 7.0 Object.freeze BUG
- 路由转发规则 & Sitescope无限提示重启的BUG
- MAC 迅雷最新版无限重启BUG的解决方法
- 火狐、Safari的js用javascript:void(0);依然执行跳转的bug
- iOS6又爆Bug Safari缓存POST的Ajax请求结果
- 完美解决safari、微信浏览器下拉回弹效果和上拉空白的bug
- chrome safari第二次提交表单bug
- overlay
- strtok()(转)
- Bloom Filter概念和原理
- SPRING设计思想之工厂模式
- MyEclipse SVN 修改用户名和密码
- safari无限alert的bug
- Android发短信的应用—新手遇到的最常见问题
- arm linux 相关工具及文档
- 【学习】构建WCF面向服务的应用程序系列课程笔记:(2) 契约设计
- JSP获得当前用户正在使用的浏览器?
- AOP - PostSharp 2.0
- DbgPrint格式化说明
- 使用Lua构造PL/SQL Developer插件框架
- 大连赛区网赛1005 对方加一条边,我方减一条边最少的费用