سؤال

تقول المواصفات ، أنني يجب أن تكون قادرة على استخدام بوستمسيج() على كائن نافذة. موزيلا يقول, ، يجب أن أكون قادرا على القيام بذلك في نافذة مفتوحة () أيضا.

ومع ذلك ، لقد اتخذت مثال بوستمسيج روبرت نيمان وحاول أن تجعل من العمل عبر ويندوز.ومع ذلك ، لا إي 10 ولا كروم يبدو لتوفير وظيفة بوستمسيج لنافذة فتحت حديثا.

var target = … // original declaration
popoutbutton.onclick = function(evt) {
    realWin = window.open(iframeWin.frameElement.src, "window1", "width=600,height=400,status=yes,scrollbars=no,resizable=yes");
    target = realWin;
    target.focus();
};

// …snip…

target.postMessage(myMessage.value, expectorigin); // <-- fails because target.postMessage() is undefined

هل أفتقد شيئا ما أم أن هذه الميزة ببساطة ليست موجودة بعد?

- تحديث أدناه -

معاينة المطور ببساطة لا يبدو أن تفعل ذلك.حاولت مرة أخرى مع معاينة المستهلك.إي 10 (بناء 8250) يفعل ذلك كما هو متوقع.شكرا لمساعدتكم!

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

المحلول

يمكنني الحصول عليه العمل في كروم 15.0.874.121 على الرغم من أن في عينتك كنت تتصل target.postMessage قبل فتح النافذة ، على الرغم من أنك قد تخطيت أي رمز يحدد أصلا target.

قد تواجه أيضا مشكلة الاتصال postMessage قبل تحميل المحتوى الموجود في النافذة الجديدة (أو على الأقل تحميله بما يكفي لإرفاق مستمع الحدث).لذلك يمكن إطلاق الحدث عندما لا يستمع أي شيء بالفعل.قد تحتاج إلى إضافة انتظار في هذا السيناريو لضمان تحميل النافذة المفتوحة حديثا.

في إنترنت إكسبلورر 10 أحصل على السيناريو الخطأ 16388:تم إحباط العملية كلما جربت البرنامج النصي-حتى لو انتظرت 10 ثوان.

نصائح أخرى

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