当前位置:  开发笔记 > 编程语言 > 正文

创建焦点的事件观察者?

如何解决《创建焦点的事件观察者?》经验,为你挑选了2个好方法。

是否有可能让焦点事件在原型中冒泡?

我试图阻止必须在每个输入元素上分配一个观察者.



Rafael.. 31

焦点和模糊事件不会冒泡.

您可以在捕获阶段触发事件处理程序.使用标准DOM方法时,您可以编写

document.addEventListener('focus',function(e){/*some code */}, true);

"真正的"价值在这里最为重要.

问题是IE不支持捕获事件传播的阶段,但是对于IE,你可以使用focusin和focusout事件,这与焦点和模糊事件不同,它们会冒泡.我建议阅读Peter Paul Koch撰写的关于这个主题的文章.其他浏览器(Firefox,Opera,Safari)可能(我没有测试它)支持像DOMFocusIn,DOMFocusOut这样的事件,它们是IE的focusin和focusout事件的等价物.



1> Rafael..:

焦点和模糊事件不会冒泡.

您可以在捕获阶段触发事件处理程序.使用标准DOM方法时,您可以编写

document.addEventListener('focus',function(e){/*some code */}, true);

"真正的"价值在这里最为重要.

问题是IE不支持捕获事件传播的阶段,但是对于IE,你可以使用focusin和focusout事件,这与焦点和模糊事件不同,它们会冒泡.我建议阅读Peter Paul Koch撰写的关于这个主题的文章.其他浏览器(Firefox,Opera,Safari)可能(我没有测试它)支持像DOMFocusIn,DOMFocusOut这样的事件,它们是IE的focusin和focusout事件的等价物.



2> EpokK..:

你可以用这个:

function focusInHandler(event){
    Event.element(event).fire("focus:in");
}
function focusOutHandler(event){
    Event.element(event).fire("focus:out");
}

if (document.addEventListener){
    document.addEventListener("focus", focusInHandler, true);
    document.addEventListener("blur", focusOutHandler, true);
} else {
    document.observe("focusin", focusInHandler);
    document.observe("focusout", focusOutHandler);
}

document.observe('focus:in', function(event) {
    // Your code
});

我的jsFiddle:http://jsfiddle.net/EpokK/k7RPE/3/

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有