HTML JavaScript لفتح نافذة جديدة وإغلاق النافذة الحالية
-
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 قبل إغلاق النافذة ، وبالتالي السماح للنافذة الجديدة بفتحها.