有没有人知道与explicitOriginalTarget事件参数对应的跨浏览器等效项?该参数是Mozilla特定的,它给出导致模糊的元素。假设我在页面上有一个文本输入和一个链接,文本输入具有焦点。如果我单击链接,则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'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'] });
谢谢。