问一个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游览器下的!
展开
 我来答
gjsgdhr
2016-09-29 · TA获得超过1800个赞
知道小有建树答主
回答量:665
采纳率:77%
帮助的人:467万
展开全部

那得看哪个版本IE浏览器了

  1. 首先attachEvent这个函数不是规范的事件侦听函数,只是旧版的IE自己私有的函数,而从IE9开始IE逐步开始遵守W3C规范,这个函数至今已经不出现在IE中了

  2. 其次,on函数在早期IE中不支持

  3. 事件函数中访问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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式