问一个JS的事件绑定的问题
<script>window.onload=function(){varoBtn=document.getElementById('btn1');oBtn.attachE...
<script>
window.onload=function()
{
var oBtn=document.getElementById('btn1');
oBtn.attachEvent('onclick',function(){
alert(this==window)
})
}
</script>
</head>
<body>
<input id="btn1" type="button" value="aaa" />
</body>
我很想知道,上面的代码哪里出问题了?为什么执行不了?我知道这是IE游览器下的! 展开
window.onload=function()
{
var oBtn=document.getElementById('btn1');
oBtn.attachEvent('onclick',function(){
alert(this==window)
})
}
</script>
</head>
<body>
<input id="btn1" type="button" value="aaa" />
</body>
我很想知道,上面的代码哪里出问题了?为什么执行不了?我知道这是IE游览器下的! 展开
1个回答
展开全部
那得看哪个版本IE浏览器了
首先attachEvent这个函数不是规范的事件侦听函数,只是旧版的IE自己私有的函数,而从IE9开始IE逐步开始遵守W3C规范,这个函数至今已经不出现在IE中了
其次,on函数在早期IE中不支持
事件函数中访问this可能并非window本身哦
符合所有的浏览器写法应该是这样(以下代码可以运行在IE5~IE11和所有非IE浏览器上)
<head>
<script>
function onLoaded(e)
{
e = e || window.event;
var oBtn = document.getElementById('btn1');
if (oBtn.addEventListener)
{
oBtn.addEventListener("click", onButtonClick);
}
else
{
oBtn.onclick = onButtonClick;
}
}
function onButtonClick(e)
{
alert(this == window);
}
if (window.addEventListener)
{
window.addEventListener("load", onLoaded);
}
else
{
window.onload = onLoaded;
}
</script>
</head>
<body>
<input id="btn1" type="button" value="aaa" />
</body>
更多追问追答
追问
是不是IE10以上的游览器只支持oBtn.addEventListener这个方法?而IE6-9支持的是oBtn.attachEvent?
追答
IE9及以上版本不支持attachEvent,IE8及以下版本只支持attachEvent
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询