Button标签鼠标点击事件的触发源问题
写Javascript有时候真是挺郁闷的,一听到兼容性问题就头大。好多东西看起来简简单单的,还是得拿到至少5大主流浏览器上去测试才能放心。像下面的这个例子,button标签内嵌套了一个img标签。
<body> <button id="test"> <img src="http://www.google.cn/favicon.ico" /> </button> <script> document.getElementById("test").onclick=function(e){ if (!e) { e = window.event; } if (!e.target && e.srcElement) { e.target = e.srcElement; } alert(e.target.tagName); } </script> </body>
运行的时候先显示一个小图标:
点击此按钮(无论你点在哪,图标上,还是Button上),那么触发源是什么呢?直观的来看,点正中央的话应该是IMG吧,点图标边缘Button的部分触发源应该是Button吧。
可是在IE各个版本上(使用IETester可以测试不同版本IE的兼容性)和Firefox、Opera上测试的结果均是BUTTON。
本来以为这样就完事了,以后记住就行了,后来发现,Chrome和Safari(它们核心是一样的)上的行为和正常的期望是一致的,也就是说点中央的话,触发源是IMG,点边缘的话触发源是BUTTON。
又测试了Button内包含其他HTML标签,行为和IMG一样。不知道为什么要这样实现。真希望某一天所有不合标准的浏览器,特别是IE6彻底毁灭了,这样Web开发人员就可以少头疼一下了。
你可能对下面的文章感兴趣
本博客遵循CC协议2.5,即署名-非商业性使用-相同方式共享
写作很辛苦,转载请注明作者以及原文链接~
如果你喜欢我的文章,你可以订阅我的博客:-D点击订阅我的文章










最新评论
我都没绑定信用卡他怎么扣我的钱呢?3G流量本身不收费的好像, 但是如果用到了亚马逊的特定服务是要收费的,例如订阅免费的书刊 杂志。如果是你自己给自己推送的那么是不用收费的。
3g是要钱的…
精彩,睇书睇微软都唔够清楚,睇你的文档,一次就懂,好文好文
讲的很详细,就是有点儿长了,回去试一下
不行啊亲