SORU
29 EYLÜL 2009, Salı


Nasıl geri navigasyon geri tuşuna engelleyebilir miyim?

YANİ (çok standart dışı, ama çalışma) jQuery ile bunu yapabilirim

if ($.browser.msie)
    $(document).keydown(function(e) { if (e.keyCode == 8) window.event.keyCode = 0;});

Ama bir bonus çapraz tarayıcı bir şekilde Firefox, ya da çalışır bir şekilde yapmak mümkün mü?

Kayıt için:

$(document).keydown(function(e) { if (e.keyCode == 8) e.stopPropagation(); });

hiçbir şey yapmaz.

$(document).keydown(function(e) { if (e.keyCode == 8) e.preventDefault(); });

problemi çözer, ama işler backspace özgün davranış daha kötüsü de bu sayfada kullanılamayan anahtar.

EDİT: Bunu sebebi basit bir web sayfası ama büyük bir uygulama oluşturma değilim. İnanılmaz derecede sinir bozucu Geri Al yanlış yere bastın diye işe 10 dakika kaybederiz. Engelleyen hatalar vs can sıkıcı kullanıcılarının oranı geri navigasyon geri tuşuna engelleyerek yol 1000/1 üzerinde olmalıdır.

EDİT2: bendeğiltarih engellemeye çalışan navigasyon, kaza sadece.

EDİT3: @yorum brentonstrines (soru bu kadar popüler olduğu için buraya taşındı): "Bu, uzun vadeli '' ama Chromium bug to change this behavior in webkit arkasında . destek atmak olabilir bir düzeltme

CEVAP
4 Mayıs 2010, Salı


Bu kod sorunu, en azından IE ve Firefox (diğer test etmedim, ama eğer sorun bile diğer tarayıcılar varsa da makul bir şans ver) çözer.

// Prevent the backspace key from navigating back.
$(document).unbind('keydown').bind('keydown', function (event) {
    var doPrevent = false;
    if (event.keyCode === 8) {
        var d = event.srcElement || event.target;
        if ((d.tagName.toUpperCase() === 'INPUT' && 
             (
                 d.type.toUpperCase() === 'TEXT' ||
                 d.type.toUpperCase() === 'PASSWORD' || 
                 d.type.toUpperCase() === 'FILE' || 
                 d.type.toUpperCase() === 'SEARCH' || 
                 d.type.toUpperCase() === 'EMAIL' || 
                 d.type.toUpperCase() === 'NUMBER' || 
                 d.type.toUpperCase() === 'DATE' )
             ) || 
             d.tagName.toUpperCase() === 'TEXTAREA') {
            doPrevent = d.readOnly || d.disabled;
        }
        else {
            doPrevent = true;
        }
    }

    if (doPrevent) {
        event.preventDefault();
    }
});

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chanre Joubert

    Chanre Joube

    27 Temmuz 2012
  • Jeb Corliss

    Jeb Corliss

    17 Kasım 2006
  • Semantic Mastery

    Semantic Mas

    30 EKİM 2013