ما هو الكود ?
هل يمكن جعل الموقع بوضع ملأ الشاشة بمجرد فتحه 🌹
التعليقات
في الحقيقة لا يمكن ذلك بالضبط , لأن المتصفحات لا تملك صلاحية ذلك و يبقى جزء مهم من الأمر بيد المستخدم .
فإن كانت الشيفرة العامة لتطبيق وضع ملئ الشاشة كالتالي :
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)
{
// تنفيذ شيفرة ما عند الخروج من وضع ملئ الشاشة
}
}