explicitOriginalTarget

explicitOriginalTarget

有人知道跨浏览器等效于explicitOriginalTarget事件参数吗?这个参数是Mozilla特有的,它给了我造成模糊的元素。假设我在页面上有一个文本输入和一个链接。文本输入具有焦点。如果单击链接,则文本输入的blur事件会通过explicitOriginalTarget参数为我提供Firefox中的link元素。

我扩展了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'] });

谢谢。

最佳答案

除了其他基于Gecko的浏览器外,没有其他等效于explicitOriginalTarget的对象。在Gecko中,这是一个内部属性,不应由应用程序开发人员使用(也许由XBL绑定(bind)编写器使用)。

10-07 12:45