سؤال

لقد واجهت أنا وزملائي في العمل موقفًا سيئًا حيث يتعين علينا استخدام عنصر تحكم X نشط للتعامل مع كاميرا الويب على الصفحة.

هل من الممكن تعيين معالج حدث جافا سكريبت لزر في عنصر التحكم النشط X بحيث يطلق إجراءً على الصفحة عند النقر عليه، أم يتعين علينا إنشاء زر على صفحة html نفسها التي تعالج عنصر التحكم Active X و ثم يمكن إطلاق أي إجراءات ضرورية على الصفحة؟

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

المحلول

لو سمحت فقط استخدم عنصر تحكم ActiveX موجود.مثل Flash أو Silverlight.يحتوي Flash على دعم كاميرا ويب مدمج ويمكن التحكم فيه عبر JavaScript.لا يحتوي Silverlight على دعم مدمج للكاميرا، لكن تكامل JavaScript الخاص به يعد أمرًا رائعًا.

إذا كان عليك أن تكتب كتابًا خاصًا بك، فلا تقلق، فمن السهل أن تجعله يتفاعل مع JavaScript.عليك فقط فضح IDispatch واجهه المستخدم.

بالنسبة للأحداث، عليك أن تتعلم عنها نقاط الاتصال.

نصائح أخرى

نعم!يمكنك رمي الأحداث في أرض C++/ActiveX مما يجعل كود JavaScript يقوم بتشغيل وظيفة معالج الأحداث.لقد تمكنت أيضًا من إنشاء عنصر تحكم ActiveX غير مرئي بالكامل (نفس لون خلفية الصفحة) بدون أزرار أو تعليقات مرئية قامت بكل عمل واجهة المستخدم الرسومية من خلال JavaScript وCSS.

يحرر:نصيحة فرانك صحيحة. إليك الرابط الخاص بأحداث البرمجة النصية.

كانت استراتيجيتي هي استدعاء وظيفة C++ تسمى MyUpdate (التي تنفذ IConnectionPoint) عندما أردت فرض التحديثات في المتصفح.

(أيضًا، تأكدت من ضخ رسائل Windows في طريقة Fire_MyUpdate لأنه في بعض الأحيان قد يتم استدعاء تعليمات برمجية JavaScript مرة أخرى إلى C++ Land عن طريق استدعاء الأساليب الموجودة في عنصر تحكم ActiveX؛يؤدي هذا إلى تجنب تجميد المتصفح ويضمن بقاء واجهة المستخدم الرسومية لـ JavaScript سريعة الاستجابة، على سبيل المثال.للحصول على زر إلغاء.)

على جانب المتصفح، يحتوي كود JavaScript على المتغير العام الذي يشير إلى الكائن، متبوعًا بـ "::"، متبوعًا باسم الطريقة:

function Uploader::MyUpdate()
{
    // ... code to fetch the current state of various
    // properties from the Uploader object and do something with it
    // for example check Uploader.IsActive and show or hide an HTML div
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top