Keyboard Lock API ile daha iyi tam ekran modu

Escape tuşunu tam ekran modunda yakalamak için Klavye Kilidi API'sını kullanın.

Tam ekran bir web oyunu oynadıysanız ve oyun içi iletişim kutusuyla karşılaştığınız ve Escape tuşuyla içgüdüsel olarak iptal ettiğiniz bir web oyunu olduysa muhtemelen kendinizi tam ekran modundan çıkarmışsınızdır. Bu sinir bozucu deneyim, iletişim kutusu ve tam ekran modunun Escape tuşu için "dövüşmesi"nden kaynaklanır. Bu eşit olmayan bir savaş çünkü varsayılan tam ekran modu her zaman kazanır. Peki, diyaloğu nasıl Escape tuşu için en iyisi yapabilirsiniz? Klavye Kilidi API'si burada devreye girer.

Tam ekran modundan çıkmak için Escape tuşuna basın.

Tarayıcı desteği

Tarayıcı Desteği

  • 68
  • 79
  • x
  • x

Kaynak

Klavye Kilidi API'sini kullanma

Klavye Kilidi API'si navigator.keyboard. tarihinde kullanılabilir: Keyboard arayüzünün lock() yöntemi, fiziksel klavyedeki herhangi bir tuş veya tüm tuşlara basılması etkinleştirildikten sonra bir vaat sağlar. Bu yöntem yalnızca temel işletim sistemi tarafından erişim izni verilen anahtarları yakalayabilir. Neyse ki Escape tuşu bunlardan biridir.

Uygulamanızda tam ekran modu varsa tam ekran isteğinde bulunurken Escape tuşunu yakalayarak progresif iyileştirme olarak Klavye Kilidi API'sini kullanın. Keyboard arayüzünün unlock() yöntemiyle tam ekran modundan çıkarken klavyenin kilidini açın (yani artık yakalamayın).


// Feature detection.
const supportsKeyboardLock =
    ('keyboard' in navigator) && ('lock' in navigator.keyboard);

if (supportsKeyboardLock) {
  document.addEventListener('fullscreenchange', async () => {
    if (document.fullscreenElement) {
      // The magic happens here… 🦄
      await navigator.keyboard.lock(['Escape']);
      console.log('Keyboard locked.');
      return;
    }
    navigator.keyboard.unlock();
    console.log('Keyboard unlocked.');
  });
}

Bu, kullanıcı tam ekran modundayken Esc tuşuna basıldığında iletişim kutusunun varsayılan olarak iptal edileceği anlamına gelir. Kullanıcı, Escape tuşunu basılı tutarsa tam ekran modundan da çıkabilir. İki tarafın da en iyisi.

Tam ekran modundan çıkmak için Escape tuşunu basılı tutun.

Demografi

Hem varsayılan hem de aşamalı olarak geliştirilmiş varyantları demoda test edebilirsiniz. Demonun kaynak kodu, her iki davranışı da göstermesi gerektiğinden yukarıdaki snippet'ten daha az temizdir.

Daha iyi tam ekran modu demosu.

Uygulamada

Bu progresif geliştirmeyi pratikte kullanmak için yukarıdaki snippet'i kopyalamanız yeterlidir. Mevcut tam ekran koduyla bile, herhangi bir değişiklik yapılmadan çalışacak şekilde tasarlanmıştır. Örneğin, Freeciv oyunu için PR'ye bakın. Halkla ilişkiler birleştirildikten sonra Esc tuşuna basarak tüm oyun içi iletişim kutularını iptal edebilirsiniz.

Freeciv oyununa klavye kilidi ekleyen GitHub pull isteği.

Bonus yer işareti uygulaması

Tam ekran modunu destekleyen her uygulama veya oyun açık kaynaklı olmayacak veya yamaları kabul etmeyecektir. Daha iyi bir tam ekran modunu etkinleştirmek için yer işaretleri çubuğunuza aşağıdaki yer işareti ekleyebilirsiniz.