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

  • Andytokkallos

    Andytokkallo

    27 Kasım 2007
  • njhaley

    njhaley

    24 NİSAN 2006
  • waterfairy17

    waterfairy17

    9 Aralık 2007