سؤال

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

Var Doc = Browser.Document كما ihtmldocument2؛ var selection = doc.selection كما ihtmlselselectionobject؛ var ange = selection.createrange () كما Ihtmltxtrange؛ سلسلة shandtext = range.text؛

ومع ذلك، أحصل على صعوبة في تحديد معالج الأحداث التي يمكن من خلالها الوصول إلى Range.Text لتحديث البرنامج الإضافي الخاص بي. باستخدام حدث الاختيار وحده لا يعمل في جميع الحالات. عندما يقوم المستخدم بإلغاء تحديد النص بالنقر فوق التحديد مباشرة على التحديد، على عكس النقر فوق جزء مختلف من صفحة الويب، لا يزال Range.Text يحتوي على القيمة القديمة (غير الفارغة) عند رفع الاختيار. الحل البديل هو الاستماع أيضا للنقر فوق الأحداث. يتم رفع حدث Click مباشرة بعد الاختيارك، ولكن عند أي نطاق Point.Text فارغ أخيرا. ومع ذلك، فقد واجهت مشكلة أخرى لم أجدها حلا. هذا هو، إذا كان المستخدم نقر مزدوج النقر فوق كلمة، وبالتالي تحديده، لا يتم رفع حدث الاختيار على الإطلاق. بالإضافة إلى ذلك، عند مرارة الحدث Click (أو حدث Mousedown أو حدث SelectStart)، لا يزال Range.Text NULL!

كيف يمكنني حل هذه المشكلة الأخيرة؟ أم أن هناك نهج أفضل بشكل عام يمكنني أن تأخذ؟

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

المحلول

حاول استخدام حدث OnDragend لتحديد بسيط وحدث ONDBLCLICK لتحديد النقر المزدوج. إذا لم تنجح في محاولة الجمع بين بعض الأحداث (http://javascript.gakaa.com/c/events.aspx.)

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