أي ما يعادل التوافقية مع متصفحات الويب المعلمة الحدث explicitOriginalTarget

StackOverflow https://stackoverflow.com/questions/179826

سؤال

لا أحد يعرف من مكافئ التوافقية مع متصفحات الويب المعلمة الحدث explicitOriginalTarget؟ هذه المعلمة هي موزيلا محددة وانه يعطيني العنصر الذي تسبب في طمس. دعنا نقول لدي إدخال النص وصلة على صفحتي. إدخال النص لديه التركيز. إذا كنت اضغط على الرابط، الحدث طمس إدخال النص يعطيني عنصر الارتباط في فايرفوكس عن طريق المعلمة explicitOriginalTarget.

وأنا توسيع طريقة و onblur Autocompleter.Base للم يخف نتائج البحث عندما يفقد حقل البحث تركز على عناصر معينة. افتراضيا، يخفي طريقة و 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'] });

وشكرا.

هل كانت مفيدة؟

المحلول

وليس هناك ما يعادل explicitOriginalTarget في أي من غيرها من متصفحات مقرها أبو بريص. في أبو بريص هذا هو خاصية الداخلية وليس من المفترض أن يتم استخدامها من قبل مطور التطبيق (ربما من قبل الكتاب ملزمة XBL).

نصائح أخرى

2015 التحديث ... يمكنك استخدام event.relatedTarget على الكروم. شيء من هذا القبيل الأساسي، ونأمل في المتصفحات الأخرى ستتبع ...

وأي ما يعادل تقريبي ل.explicitOriginalTarget موزيلا في IE هو document.activeElement. أقول ما يعادل الخام لأنها سوف أحيانا إرجاع مستوى مختلف قليلا في شجرة عقدة DOM اعتمادا على الظروف الخاصة بك، لكنه ما زال أداة مفيدة. للأسف أنا لا تزال تبحث عن يعادل جوجل كروم.

لا يحتوي IE srcElement نفس العنصر كما FF explicitOriginalTarget. فمن السهل أن نرى هذا: إذا كان لديك حقل زر مع العمل onClick وحقل نصي مع العمل onChange، تغيير حقل النص وتحريك المؤشر مباشرة إلى زر وفوقه. عند هذه النقطة srcElement IE سيكون حقل النص، ولكن سوف يكون explicitOriginalTarget مجال زر. لIE، يمكنك الحصول على x و y إحداثيات الماوس من event.x وevent.y خصائص.

وللأسف، فإن متصفح كروم يوفر أيا من explicitOriginalTarget ولا الماوس إحداثيات فوق. كنت اليسار إلى الأجهزة الخاصة بك لمعرفة أين تم تشغيل الحدث onChange من. للقيام بذلك، والاستخدام الحكيم للmousemove وmouseout الأحداث يمكن أن توفر تتبع الماوس ومن ثم يمكن تفتيشها في معالج onChange.

ويبدو أنها أكثر مصممة للكتاب التمديد من أجل تصميم المواقع ...

وكنت أراقب الأحداث طمس / التركيز على كل من الأهداف (أو الأهداف المحتملة) وتبادل المعلومات الخاصة بهم.
قد يتوقف تنفيذ المحدد على الغرض، في الواقع.

لIE يمكنك استخدام srcElement، وأجبر ذلك.

if( !selectTag.explicitOriginalTarget )
    selectTag.explicitOriginalTarget = selectTag.srcElement;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top