HTML JavaScript لفتح نافذة جديدة وإغلاق النافذة الحالية

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

  •  02-10-2019
  •  | 
  •  

سؤال

لدي نافذة منبثقة وفي تلك الصفحة لدي الكود التالي في الجسم.

<a href="http://www.example.com" target="_blank" onClick="javascript:window.close()"><img src="...something"/></a>

والغرض من ذلك هو إغلاق النافذة المنبثقة هذه عندما ينقر المستخدم على رابط الصورة ، وفتح صفحة جديدة وتوجيهها http://www.example.com.

إنه يعمل في IE و Chrome ، ولكن ليس في Firefox. تغلق النافذة المنبثقة ولكن لا يتم فتح نافذة جديدة.

أيه أفكار؟

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

المحلول

نعم ، يمكنني إعادة صياغة هذا - مثير للاهتمام. setTimeout يعمل من حوله:

onClick="javascript: setTimeout(window.close, 10);"

لا يمكنني إلا أن أخمن أنه بمجرد إغلاق النافذة (التي تحدث قبل اتباع الارتباط التشعبي) توقف Firefox عن معالجة تلك الصفحة.

تحرير: من الأفضل اجعله 10 مللي ثانية تأخير - مع 1 مللي ثانية من الكروم لا يغلق النافذة.

نصائح أخرى

يتم حل السؤال فعليًا في المباراة الافتتاحية ، لكنه لم يساعد مشكلتي (غير متمنيا: تحافظ النوافذ الجديدة تحت Firefox على نفس حجم المنبثقة الحالية).

لذلك أجد الحل التالي:

function whenClicked() 
{
    window.close();
    opener.location.href = "http://www.example.com";

}

أو هذا إذا كان يجب أن يفتح PPAGE في علامة تبويب جديدة:

function whenClicked() 
{
    window.close();
    opener.open(http://www.example.com, '_blank');
}

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

في هذه الحالة ، ستكون الوظائف الإضافية هي إغلاق النافذة وتظنتي أن Firefox يختار تفسير ذلك على أنه "لقد انتهينا جميعًا هنا" ، وبالتالي فإن حدث النقر لا يرجع أبدًا ، وبالتالي فإن الصفحة الجديدة لم يتم فتحها أبدًا.

إن اقتراح Evgeny لاستخدام مهلة قصيرة سيسمح لحدث النقر بالعودة إلى True قبل إغلاق النافذة ، وبالتالي السماح للنافذة الجديدة بفتحها.

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