chrome中remove函数的坑

起因

测试的浏览器:ie7 ie8 safari firefox chrome

出现问题代码:

<a href="#" id="test" οnclick="remove();">test</a>
<script>
var remove=function(){
    alert('111');
}
</script>

结果:

ie7 ie8 safari firefox 均正常弹出 “111”

chrome <a>元素被移除

http://www.cnblogs.com/danhuang/

经过

首先我怀疑remove是javascript保留字(关键字),经证实如我所知remove并非是javascript保留字(关键字)

javascript的保留字(关键字)请参考:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Reserved_Words

然后在chrome的界面按下F1到帮助里面去搜,也没搜到相关的东西。于是决定自己研究。。。

删掉javascript代码,打开开发者工具,输入:

window.remove

看一下remove函数有没有被定义了,结果是 undefined

说明没有被定义,其实这步是多余的。。。

http://www.cnblogs.com/danhuang/

继续看<a>元素的__proto__

document.getElementById("test").__proto__

在 __proto__HTMLElement 下的 __proto__Element 下,我们看到了

remove: function remove() { [native code] }

至此,真相浮现出来了

http://www.cnblogs.com/danhuang/

结果

解决办法1:改函数名,什么drop啊,remove1啊之类的,记住别用delete,哈哈~~

解决办法2(推荐):使用命名空间(namespace)

<a href="#" οnclick="XW.remove();">test</a>

<script>
XW = {};

// add remove() to the custom namespace, not the global namespace
XW.remove = function() {
// some code here
};
</script>

http://www.cnblogs.com/danhuang/

探究

chromium Issue:https://code.google.com/p/chromium/issues/detail?id=170395

webkit changeset:http://trac.webkit.org/changeset/129400

http://www.cnblogs.com/danhuang/

教训

详细整洁而且有意义的命名很重要。

 

转载请注明出处,谢谢。

转载于:https://www.cnblogs.com/danhuang/archive/2013/05/07/chrome_remove_function.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值