IE的attachEvent返回true,但处理程序显示“空”(IE attachEvent cal

2019-10-17 23:59发布

我有一个生成一个HTML的输入(文本框)相当简单的ASP.NET页面。 在生成的HTML,我附上一个处理的几个事件,包括聚焦状态,onkeypress事件,和的onkeyup。 因为这是针对一个版本的IE不支持的addEventListener(情况,对此,我也没有办法)的解决方案,我被迫使用的attachEvent。

到的attachEvent一个典型的呼叫如下-我摘录这个来源从原来的简洁/清晰起见,所以它是不准确的问题的代码:

var hostControl = document.getElementById('mytextbox');
var attachResult = hostControl.attachEvent('onfocus', function(){
    hostControl.select();
});

if (!attachResult)
{
    alert('Attach failed.');
}

attachResult = hostControl.attachEvent('onblur', function(){
    if (hostControl.value=='') 
    {
        alert('Warning - no entry.');
    }
});

if (!attachResult)
{
    alert('Attach failed.');
}

当我通过这段代码在IE调试步骤,在这两种情况下,这应该表明事件连接尝试是成功返回“真”的attachEvent。 然而,当我看着[事件]的处理程序调试器中的控制,所有的事件显示“空”,没有任何附加的处理程序。

事情我已经试过/研究:

  • 我读过关于在IE事件附件变幻莫测的几个不同的文章,所以我speciously避免任何“这个”引用。
  • 我想,用试图如果有使用的addEventListener的包装的addEvent块的一个一个版本,尽管我知道这将是一个IE浏览器的解决方案。

当我试图那个版本对火狐,活动连接工作正常通过的addEventListener,但使用的attachEvent(带的attachEvent仍然返回true)未能在IE中。

  • 然后我选择以消除包装可能会引入任何可能出现的问题,并直接使用的attachEvent对控制,这使我现在的我。 问题仍然存在。

我想认为我只是忽略了一些很简单的,因为我之前迷上了事件没有困难,但这里的东西是扔我一个弧线球我就是不承认。 欣赏这个额外的眼球,看看我是错误的。

文章来源: IE attachEvent call returns true, but handler shows “null”