chrome中button的默认函数

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="移除"/>
原文地址:https://www.cnblogs.com/BigIdiot/p/2773386.html