Кто-нибудь знает о эквиваленте crossbrowser параметра события explicitOriginalTarget? Этот параметр является специфичным для Mozilla, и он дает мне элемент, который вызвал размытие. Скажем, у меня есть текстовый ввод и ссылка на моей странице. Ввод текста имеет фокус. Если я нажму на ссылку, текстовое событие blur события дает мне элемент ссылки в Firefox через параметр explicitOriginalTarget.
Я расширяю метод 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 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'] });
Спасибо.