chrome版本: 24.0.1312.5 js代码: <input id="remove" onclick="remove();" type="button" value="移除"/>
在chrome点击按钮后 按钮本身移除了,而我并没有编写remove函数. 感觉很奇怪,于是用了以下代码:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>chrome bug</title> </head> <body> <input id="remove" onclick="remove();" type="button" value="移除"/> <script> var t=document.getElementById('remove'); for(attr in t) document.write(attr+'<br/>'); </script> </body> </html>
打印结果中查看到remove函数,原来chrome中button本身就有remove函数.难道是html5的新特性?
在firefox和safari中测试均没有发生上述情况。
为了查看remove的函数具体实现,用以下代码具体查看:
<script> var t=document.getElementById('remove'); document.write(t.remove+'<br/>'); </script> print: function remove() { [native code] }
结果说明此函数是通过c++实现。
不知道这是不是chrome的一个bug , input如果是text类型,只要绑定onclick='remove()' 点击文本框,文本框也消失了,让开发人员莫名奇妙!
解决办法:
更改事件名,不让自己写的事件函数和内置的函数冲突。
<input id="remove" onclick="drop();" type="button" value="移除"/>