有誰知道crossbrowser相當於explicitOriginalTarget事件參數嗎?這個參數是Mozilla特有的,它給了我造成模糊的元素。假設我在我的頁面上有一個文本輸入和一個鏈接。文字輸入有重點。如果我點擊鏈接,文本輸入的模糊事件通過explicitOriginalTarget參數爲我提供了Firefox中的鏈接元素。Crossbrowser相當於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'] });
謝謝。
謝謝謝爾蓋。也許我應該開始使用事件委託編寫我自己的方法,而不是嘗試擴展Autocompleter的onBlur方法。通過事件委託並使用一些全局變量,我可以解決這個問題。 – matte 2008-10-08 07:08:03