Javascript IE中浮动和内联块元素的focusin事件触发器

Javascript IE中浮动和内联块元素的focusin事件触发器,javascript,internet-explorer,javascript-events,Javascript,Internet Explorer,Javascript Events,focusin事件是表单输入和链接标记的一部分,正在应用于div和span标记。浮动块和内联块元素会发生这种情况。在IE(8和9)中发现了这个问题 演示==> 有没有办法阻止这一切 谢谢不像你期望的那样,focusin和focusout会出现气泡,不像常规的focus事件。处理此问题的两种主要方法是:事件委派,或者简单地阻止事件冒泡 你的小提琴很难理解(即:不知道你想做什么)。首先想到的是(在将JS代码移动到JSFIDLE上的JavaScript字段之后),您在好的浏览器中捕获了focus事件,

focusin事件是表单输入和链接标记的一部分,正在应用于divspan标记。浮动块和内联块元素会发生这种情况。在IE(8和9)中发现了这个问题

演示==>

有没有办法阻止这一切


谢谢

不像你期望的那样,focusin和
focusout
会出现气泡,不像常规的
focus
事件。处理此问题的两种主要方法是:事件委派,或者简单地阻止事件冒泡

你的小提琴很难理解(即:不知道你想做什么)。首先想到的是(在将JS代码移动到JSFIDLE上的JavaScript字段之后),您在好的浏览器中捕获了
focus
事件,而在Crumy IE中,focusin则冒泡。
这可能非常烦人,特别是因为IE不支持实际的事件捕获。然而,这里有一个(简单但经过测试且有效的)建议:

function mycb(evt)
{
    evt = evt || window.event;//get event object
    var from = evt.target || evt.srcElement;//get source
    if (evt.stopPropagation)//stop event from bubbling
    {
        evt.stopPropagation();//shouldn't be necessary, but you never know
    }
    else
    {
        evt.cancelBubble = true;//stop propagation in IE-lingo
    }
    if (from.tagName === 'DIV' || from.tagName === 'SPAN')
    {//if source was a tag that souldn't fire event, return false;
        if (evt.preventDefault)
        {
            evt.preventDefault();
            return false;
        }
        evt.returnValue = false;
        return false;
    }
     alert("fired!!!");
}

var elem = document.getElementById("mybox");
if( elem.attachEvent )
{
    elem.attachEvent("onfocusin",  mycb);
}
else
{
    elem.addEventListener("focus", mycb, true);
}
这段代码是在IE8中测试的,可以找到fiddle
今天我碰巧读到了关于这件事的报道。我想这是一个值得一提的消息来源


希望这有帮助

为什么这会影响你的网站?请包括一个演示问题的示例。示例可在此处找到=>Hi Elias,感谢您的回复,但这是一个通过关闭默认值的通用解决方案,但您是否注意到,如果元素浮动,onfocus[in | out]将冒泡,但通过将display属性设置为inline可以正常工作。在我的示例中,通过删除容器类中的float属性,事件不会冒泡。我假设您希望防止默认行为,因为您是在非IE浏览器中捕获事件的。不过,我不太明白你所说的事件没有泡沫是什么意思。参考资料中很清楚地指出,这一事件是泡沫——句号。你能不能提供一把小提琴,让活动不产生泡沫?也许这会再次让我们了解一些问题,这是小提琴唯一的区别,只是去掉了风格。哦,现在我明白了。。。根据,浮动元素需要一个width属性才能按预期呈现(和表现)。我尝试添加一个
style=“width:”100px;“
属性到
#mybox
元素,在我看来,它似乎起到了作用。谢谢,还有一个有趣的问题要研究+1!