Est-ce que quelqu'un connaît l'équivalent de type "crossbrowser" du paramètre d'événement explicitOriginalTarget? Ce paramètre est spécifique à Mozilla et il me donne l'élément qui a provoqué le flou. Disons que j'ai une entrée de texte et un lien sur ma page. La saisie de texte a le focus. Si je clique sur le lien, l'événement flou de l'entrée de texte me donne l'élément de lien dans Firefox via le paramètre explicitOriginalTarget.Equivalent de l'objet crossbrowser du paramètre d'événement explicitOriginalTarget
Je suis en train d'étendre la méthode onBlur de Autocompleter.Base pour ne pas masquer les résultats de la recherche lorsque le champ de recherche perd le focus sur des éléments donnés. Par défaut, la méthode onBlur se cache si le champ de recherche perd le focus sur un élément.
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'] });
Merci.
Merci Sergey. Peut-être que je devrais commencer à écrire ma propre méthode en utilisant la délégation d'événements au lieu d'essayer d'étendre la méthode onBlur de Autocompleter. Avec la délégation d'événements et l'utilisation de certaines variables globales, je peux résoudre ce problème. – matte