ما هو الكود ?
هل يمكن جعل الموقع بوضع ملأ الشاشة بمجرد فتحه 🌹
في الحقيقة لا يمكن ذلك بالضبط , لأن المتصفحات لا تملك صلاحية ذلك و يبقى جزء مهم من الأمر بيد المستخدم .
فإن كانت الشيفرة العامة لتطبيق وضع ملئ الشاشة كالتالي :
document.documentElement.requestFullscreen().catch((e) => { console.log(e); });
فإننا قد نواجه بعض الأخطاء التي تخبرنا بعدم إمكانية ذلك من مثل :
Failed to execute 'requestFullscreen' on 'Element': API can only be initiated by a user gesture.
أي أن الأمر لا يمكن لا يتم مباشرة دون تدخل المستخدم فالقرار يعود للمستخدم في ذلك عن طريق تلميحة منه أو موافقة , و لو بتفاعلية بسيطة .
و لذلك سنقوم بحيلة بسيطة تقوم بإستدعاء شيفرتنا السابقة وفقا لحدث معين , وليكن dbclick مثلا :
document.addEventListener('dbclick', () => { document.documentElement.requestFullscreen().catch((e) => { console.log(e); }); });
سيقوم هذا بتطبيق وضع ملئ الشاشة عند الضغط على الشاشة مرتين متتاليتين , كما يمكنك إضافة أي حدث اخر مثل تمرير مؤشر الفأرة أو غيرها .
و بشكل عام , سلوك مثل هذا لا تمنعه المتصفحات إعتباطا فقط , فهو يجبر المستخدم على ذلك . و كإقتراح أفضل و أكثر عملية يمكنك إضافة زر لذلك بتنسيق أو وضعية مثل زر الرجوع إلى الأعلى مثلا . بحيث تتم إضافة وظيفة ملئ الشاشة إلى حدث الضغط على هذا الزر .
سؤال اخر : هل يمكن اخذ اذن من المستخدم بحيث في المرة القادمة يكون الكود قد تم تفيذه بدون فعل من المستخدم؟
لا أظن أن ذلك ممكن أيضا , فلا يمكن مثلا التحقق إن تم تخزين ملف تعريف إرتباط يخص موافقة المستخدم و التصرف بناء عليه . فالمنطق وراء قراءة الكود لا يرى شرط التحقق :
if(cookieExists('auto_full_screen')){ // do full screen }
إلا كشرط عادي يقبل قيمة بوليانية , و لا يهتم بغرض تخزين هاته الكوكي . إذ أن شيفرة تنفيذ وضع ملئ الشاشة لن تتبع إلا ذات المنطق السابق :
لا يمكن لا يتم مباشرة دون تدخل المستخدم فالقرار يعود للمستخدم في ذلك عن طريق تلميحة منه أو موافقة , و لو بتفاعلية بسيطة .
طيب شكراً على مساعدتك 🌹
ولكن لدي سؤال اخر : هل يمكن ان يُغلق الموقع بنفسه اذا ما قام المستخدم بالخروج من الفول سكرين , ليس شرط ان يغلق الموقع وانما تنفيذ كود معين
بالطبع يمكنك ذلك , سيمكن التصرف عند إستدعاء الحدث التالي :
if (document.addEventListener) { document.addEventListener('fullscreenchange', exitHandler, false); document.addEventListener('mozfullscreenchange', exitHandler, false); document.addEventListener('MSFullscreenChange', exitHandler, false); document.addEventListener('webkitfullscreenchange', exitHandler, false); } function exitHandler() { if (document.webkitIsFullScreen || document.mozFullScreen || document.msFullscreenElement !== null) { // تنفيذ شيفرة ما عند الخروج من وضع ملئ الشاشة } }
التعليقات