نظرًا لقيود السياسات المتماثلة ، كان التواصل عبر المجال دائمًا مشكلة صعبة. بالطبع هناك العديد من الحلول:
1. يتم تطبيق إعدادات المستند.
2. باستخدام iframe و location.hash ، تتعرض البيانات مباشرة لعنوان URL ، وقدرة البيانات ونوعها محدودة.
3. Flash LocalConnection ، يمكن للكائنات التواصل في ملف SWF واحد أو بين ملفات SWF متعددة ، طالما
فقط كن على نفس العميل ، والتطبيق المتبادل ، والمواد المتقاطعة.
Window.Name يحفظ البيانات ونظام الإرسال الديناميكي للوكالة الثابتة للوكالة ، ويستخدم بالكامل ميزة Window.name التي لا تتغير بسبب تغييرات URL في الصفحة.
هناك العديد من رموز المثال على الإنترنت ، يمكنك البحث عنها بنفسك.
واحدة من أروع واجهات برمجة التطبيقات في HTML5: عبر الوثيقة المراسلة. سوف تدعم المتصفحات المتقدمة Internet Explorer 8+ و Chrome و Firefox و Opera و Safari هذه الميزة. هذه الوظيفة سهلة التنفيذ أيضًا ، بما في ذلك حدث "الرسالة" الذي يقبل المعلومات وطريقة "postmessage" التي ترسل الرسائل.
طريقة "postmessage" لإرسال رسالة
أرسل رسالة إلى النافذة الخارجية:
نسخة الكود كما يلي: otherwindow.postmessage (رسالة ، Targetorigin) ؛
otherwindow: يشير إلى النافذة المستهدفة ، أي ، والتي يتم إرسال النافذة إليها ، وهي عضو في سمة النافذة.
وصف المعلمة:
1.message: إنها الرسالة التي سيتم إرسالها ، النوع هو سلسلة ، كائن (لا يدعمه IE8 ، 9)
2. Targetorigin: إنها رسالة محدودة لتلقي ، ولا تقصرها.
حدث "الرسالة" الذي يقبل المعلومات
نسخة الكود كما يلي:
var onMessage = function (event) {
var data = event.data ؛
var Origin = event.origin ؛
// افعل بعضًا
} ؛
if (typeof window.adDeventListener! = 'undefined') {
window.adDeventListener ('message' ، onMessage ، false) ؛
} آخر إذا (typeof window.attachevent! = 'undefined') {
// لـ IE
window.attachevent ('onMessage' ، onMessage) ؛
}
تتلقى المعلمة الأولى لوظيفة رد الاتصال كائن الحدث ولها ثلاث خصائص مشتركة:
1.DATA: رسالة
2.Rigin: عنوان المصدر
3.Source: مصدر كائن Domwindow
بالطبع ، لدى PostMessage أيضًا بعض أوجه القصور:
1. قيم نوع البيانات التي تم تمريرها ضمن أنواع سلسلة دعم IE8 و IE9 ، ولكن يمكنك استخدام التحويل المتبادل بين كائنات JSON والسلاسل لحل هذه المشكلة ؛
2.IE6 ، يحتاج IE7 إلى كتابة خطة توافق.