问题引入:
在模仿某个网站的修改密码的时候,需要用到<a>这个标签来调用js函数,通过查找资料。要想成功调用,需要添加下面这些代码
document.onkeydown = function(e) {
<span style="font-size:14px;"> var ev = document.all ? window.event : e;//区分IE浏览器和其他浏览器对象时的常用写法,IE中的window.event的时间对象是全局对象
if (13 == ev.keyCode) {//当键盘或者按钮被按下时,发生keydowm事件
check(form);
}
}</span><span style="font-size:12px;">
</span>
在了解第一行代码的时候,发现了一个问题,就是关于JavaScript添加事件的相关知识点
详细描述:
下面描述四种添加时间的方式。前几种现在都已不用。但是还是了解下。
1:直接在html的属性中写js代码
<div οnclick="alert(4)">demo</div>:点击demo输出4
<div οnclick="alert(window.event.type)">demo</div>点击demo输出click,说明获取了事件click,但这句话在有些浏览器中不行,比如说火狐浏览 器。不兼容。如果写成event.type就能输出。这是因为在火狐浏览器中定义了参数event,该参数恰好与IE的全局对象event重名
2:定义一个函数,赋值给html元素的onxxx属性
<script>
functin clk(){}
</script>
<div οnclick="click()"><demo>
先定义函数clk,然后赋值给onclick属性
3:添加事件方式,使用addEventListener或IE专有的attachEvent
<div id="d3">demo</div>
<script type="text/javascript">
var d3=document.getElementById("d3");
function clk(){alert(4)};
if(d3.addEventListener){
d3.addEventListener('click',clk,false);
}
if(d3.attachEvent){
d3.attachEvent('onclick',clk);
}
</script>
这是目前推荐的方式,较前两种功能更强大,可以为元素添加多个响应函数,支持事件冒泡或捕获,前两种都是默认冒泡
总结如下
IE6/7/8支持通过window.event获取对象,通过attachEvent方式添加时间时也会支持时间对象作为句柄第一个参数传入
FireFox 只支持事件作为句柄第一个参数传入
IE9/Chrome。。。两种都支持