Does anyone know of crossbrowser equivalent of explicitOriginalTarget event parameter? This parameter is Mozilla specific and it gives me the element that caused the blur. Let’s say i have a text input and a link on my page. Text input has the focus. If I click on the link, text input’s blur event gives me the link element in Firefox via explicitOriginalTarget parameter.
I am extending Autocompleter.Base’s onBlur method to not hide the search results when search field loses focus to given elements. By default, onBlur method hides if search-field loses focus to any element.
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'] });
Thanks.
There is no equivalent to explicitOriginalTarget in any of the other than Gecko-based browsers. In Gecko this is an internal property and it is not supposed to be used by an application developer (maybe by XBL binding writers).