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

Crossbrowser相当于explicitOriginalTarget事件参数

如何解决《Crossbrowser相当于explicitOriginalTarget事件参数》经验,为你挑选了1个好方法。

有没有人知道相当于explicitOriginalTarget事件参数的crossbrowser?此参数是特定于Mozilla的,它为我提供了导致模糊的元素.假设我的页面上有文本输入和链接.文本输入具有焦点.如果我点击链接,文本输入的模糊事件通过explicitOriginalTarget参数为我提供了Firefox中的链接元素.

我正在扩展Autocompleter.Base的onBlur方法,以便在搜索字段失去对给定元素的焦点时不隐藏搜索结果.默认情况下,如果搜索字段失去对任何元素的焦点,则onBlur方法会隐藏.

Autocompleter.Base.prototype.onBlur = Autocompleter.Base.prototype.onBlur.wrap(
function(origfunc, ev) {
    var newTargetElement = (ev.explicitOriginalTarget.nodeType == 3 ? ev.explicitOriginalTarget.parentNode: ev.explicitOriginalTarget); // FIX: This works only in firefox because of event's explicitOriginalTarget property
    var callOriginalFunction = true;
    for (i = 0; i < obj.options.validEventElements.length; i++) {
        if ($(obj.options.validEventElements[i])) {
            if (newTargetElement.descendantOf($(obj.options.validEventElements[i])) == true || newTargetElement == $(obj.options.validEventElements[i])) {
                callOriginalFunction = false;
                break;
            }
        }
    }
    if (callOriginalFunction) {
        return origFunc(ev);
    }
}
);


new Ajax.Autocompleter("search-field", "search-results", 'getresults.php', { validEventElements: ['search-field','result-count'] });

谢谢.



1> Sergey Ilins..:

除了基于Gecko的浏览器之外,没有任何等效于explicitOriginalTarget.在Gecko中,这是一个内部属性,它不应该由应用程序开发人员使用(可能由XBL绑定编写者).

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