إيفرام/نافذة المباراة الافتتاحية لإعادة توجيه المنبثقة

StackOverflow https://stackoverflow.com/questions/3018470

سؤال

لدي صفحة تقع في X.com. في هذه الصفحة يوجد زر ، عند النقر فوقه ، سيتم تشغيل نافذة جديدة (باستخدام طريقة javaScript's Window.Open ()) إلى صفحة موجودة في Z.com. تقوم المنبثقة ببعض الأشياء ، ثم يعيد توجيه النافذة الأصلية (المباراة الافتتاحية ، X.com) إلى صفحة مختلفة بناءً على بعض المعلمات المحددة في المنبثقة.

هذا يعمل بشكل جيد في Firefox/Chrome ، ولكن ليس في IE. في IE (8 على وجه التحديد ، لكنني أعتقد أن 7 لديه أيضًا هذه المشكلة) لم يتم إعادة توجيه النافذة الأصلية (المباراة الافتتاحية). بدلاً من ذلك ، تظهر نافذة جديدة ويتم إعادة توجيه تلك النافذة.

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

هل هناك طريقة للتغلب على ذلك؟ كيف يمكنني الحصول على النافذة الأصل لإعادة توجيه إلى صفحة بناءً على المعلمات في نافذة منبثقة أو iframe؟

تعديل:

فيما يلي بعض التعليمات البرمجية للعينات:

في صفحة على Domaina.com ، لدي هذا:

<img src='/images/test.png' onclick="window.open('http://www.domainB.com/item.aspx', 'name', 'width=100,height=100,menubar=no,status=no,toolbar=no');" />

في item.aspx على domainb.com لدي هذا في JavaScript:

opener.location.href = 'http://www.somethingelse.com/';

في Firefox/Chrome ، هذا يعمل بشكل جيد. في IE ، عندما يحاول Domainb.com تعيين موقع. href على الافتتاح (ويعرف أيضًا باسم النافذة الأصل ، التي هي Domaina.com) ، فإنه يفتح بدلاً من ذلك نافذة جديدة ، وهذا ليس ما أريده. أريده أن يعيد توجيه الافتتاح (النافذة الأصل) إلى عنوان URL الذي حددته.

بارا

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

المحلول 2

انتهى بي الأمر بحلها عن طريق القيام بما يلي:

أضفت iframe إلى صفحتي الرئيسية. Iframe في نفس المجال مثل المنبثقة. يحتوي iFrame على زر ، عند النقر عليه ، سيقوم بتشغيل المنبثقة.

المنبثقة تفعل ذلك ، ثم يغير علامة تجزئة iframe إلى شيء مثل #Change (وبالتالي فإن عنوان URL سيكون www.wheadead.com/iframe.aspx#change). في JavaScript من iframe ، لدي حلقة تسير تتحقق من التجزئة لمعرفة ما إذا كانت تقول "تغيير" وإذا كان الأمر كذلك ، فسيتم إعادة توجيه الصفحة الأصل إلى أي مكان أريد. هذا يعمل بشكل جميل.

لأنني لم أكن أريد حلقة Infinite في كل صفحة واحدة ، أقوم بفحص المتصفح بحيث ينطبق هذا فقط على IE. لجميع المتصفحات الأخرى ، أنا فقط أستخدم Window.Opener الذي يعمل بشكل جيد.

بارا

نصائح أخرى

مرحبًا ، لقد حللت مشكلتي عن طريق القيام بما يلي بدلاً من استخدام window.opener.location = "....

يستخدم window.opener.document.location = "url". هذا عمل بالنسبة لي.

شيء آخر هو التأكد من أنك عدم إعادة توجيه من HTTP إلى HTTPS هذا سوف يتسبب أيضا في كسرها.

هتافات

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