سؤال

ولقد تم العمل على BHO / شريط مكتوب في C # أن يستمع إلى HTML الأحداث التي أثيرت على صفحة ويب الحالية للمتصفح. يتضمن حل فئة قابلة لإعادة الاستخدام ودعا HtmlPageEventManager الذي يهدف إلى الاشتراك في قائمة معينة من الأحداث HTML لكل صفحة ويب جديدة من افتتاحه. والهدف من ذلك هو أن نعلق معالجات بأسرع ما يمكن للمستخدم أن يبدأ التفاعل مع عناصر الصفحة، حتى قبل تحميل الصفحة كاملة. باستخدام هذه الفئة هو بسيط - مجرد دعوة المنشئ:

var evts = new List() {
    HtmlEvent.onclick, HtmlEvent.ondblclick, HtmlEvent.onkeydown,
    HtmlEvent.onselectstart, HtmlEvent.onselectionchange,
    HtmlEvent.onfocus, HtmlEvent.onselect
};
new HtmlPageEventManager( this, evts, this.HtmlEventHandler );

يرجى تحميل بلدي الحل هنا لمحاولة الخروج منها وترسل لي ردود الفعل. لا تتردد في استخدامها في المشاريع الخاصة بك إذا وجدت أنه من المفيد. على الرغم من أنه يعمل بشكل جيد، هناك مناسبات عندما يفشل إرفاق الأحداث. لقد كان صعوبة التحديد الدقيق تلك الظروف. حتى أتمكن من استخدام بعض المساعدة تحسين على HtmlPageEventManager.

وبلدي حل المراجع SpicIE الصورة المجالس كنهم غير المدرجة في التحميل أعلاه ، لذلك سوف تحتاج إلى الحصول عليه من وSpicIE موقع . راجع للشغل، وربما هذا هو الوقت المناسب لنسأل: كيف شعبية هو SpicIE؟ أي أداة أفضل للاستخدام؟

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

المحلول

نعم! I تغلب على "تحديث" القضية عن طريق الاشتراك في الحدث DownloadComplete وBHO، حيث أدعو مرة أخرى بلدي "RegisterEventHandlers" أسلوب مساعد التي يعلقها معالجات الأحداث HTML. وjeffamaphone كود ترتبط كانت مفيدة. I أدرجت فكرتها من "normalPageLoad" متغير العضو لاستدعاء مشروط RegisterEventHandlers. كنت قد بحثت أيضا في المصاحبة منتدى آخر . لا أستطيع أن أفهم التركيز على الحدث المحملة الإطار الأصل، وبالرغم من ذلك. حصلت قانون بلدي يعمل دون حتى يفعل ذلك جزء. على أي حال، أعتقد HtmlPageEventManager تعمل بكامل طاقتها الآن - تدق على الخشب. من فضلك أعطني يصرخون اذا وجدت الحالة التي كان لا يزال لا تقوم بعملها.

نصائح أخرى

وأنت تسير لتجد هناك أي حل 100٪ للقيام بذلك لIE أثناء تحميل الصفحة. انها ليست غلطتك: نموذج الحدث IE هو كتلة السباغيتي العملاقة من التعليمات البرمجية غير متزامن مما يجعل من الصعب جدا الحصول على حق. إذا كنت قد حصلت على الحل الذي هو 95٪، وأنا أقول أن يكون سعيدا والمضي قدما.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top