سؤال

ولدي كائن اكتف حملت في صفحة HTML. وبعد ذلك استخدام هذا الكائن ActiveX لإنشاء كائن آخر، ولكني في حاجة إلى تسجيل حدث مع وجوه جديدة تم إنشاؤها. الكائن يتوقع المستمع الحدث من نوع معين.

ويمكنني تحميل هذا نفس دلل في ج # وسوف تعمل بشكل جيد. كود يبدو مثل هذا لج #.

upload = obj.constructUploadObj(uploadConfig);
upload.stateChanged += new UploadActionEvents_stateChangedEventHandler(upload_stateChanged);

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

uploadAction = obj.constructUploadObj(uploadConfig);
uploadAction.stateChanged = upload_stateChanged;

function upload_stateChanged(sender){
    writeLine("uploadState changed " + sender.getState());
}

ولقد عددت بعض من خصائص الكائن uploadAction في جافا سكريبت لضمان أن يتم إنشاؤه في الواقع. عندما أحاول وتسجيل هذا الحدث مع uploadAction أنه يلقي خطأ قائلا "لا يعتمد الكائن هذه الخاصية أو الأسلوب."

للي فإنه يبدو وكأنه يتوقع لها حدثا كتابة بشدة. هناك على أية حال لتسجيل الحدث مشابها لC # في جافا سكريبت؟

وشكرا مقدما.

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

المحلول 3

والعثور على الخروج من الشركة أن هذه الخصائص لا يمكن الوصول إليها من خلال جافا سكريبت. وسوف تحتاج إلى تخريج لاستخدامها داخل جافا سكريبت.

نصائح أخرى

وجافا سكريبت الخاصة بك ينبغي أن ننظر بشيء من هذا القبيل:

function uploadAction::stateChanged( parms )
{
    // ...
    // implementation
    // ...
}

ملحوظة، أن هذا هو إعلان وظيفة ثابتة، على افتراض أن لديك كائن X نشط اسمه 'uploadAction. وأنا أعلم أن هذا لا يعمل - نستخدمها في شركتي

.

ورسالة الخطأ يعني أن uploadAction لا يدعم خاصية stateChanged. كود جافا سكريبت الخاصة بك تبدو صحيحة، المشكلة يبدو أن مع الكائن الذي تحاول إرفاق معالج حدث ل.

وأنا أقترح باستخدام نموذج تسجيل الحدث المتقدمة الواردة هنا .

وuploadAction.addEventListener('stateChanged', upload_stateChanged, false);

ملحوظة، قد تحتاج إلى استجواب حججك للأسلوب upload_stateChanged، كما الوسيطة الأولى يجب أن تكون الدولة الحدث. مثلا: upload_stateChanged(evt, sender) ...

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