2016-08-13 22 views
11

Kullanıcı boştayken patlayan bir modda yardıma ihtiyacım var. NVDA ile çalışan Firefox'ta test edene kadar harika çalışıyor. Ok tuşlarını kullanırken ve bir mobil cihazda kaydırdığımda odakla ilgili sorunlar var. Modal göründüğünde ve kullanıcı ok veya sweat'leri kullandığında, tıklatmak için beklersek, odağı birkaç saniye sonra üst düğmeden başlığa dönecektir. Çalışma örneğini şu şekilde yükledim: https://jsfiddle.net/ncanqaam/Ekran okuyucusu üzerinde boşta kalma zaman aşımı uyarısı modu

Boşta kalma süresini bir dakikaya değiştirdim ve kullanıcının oturumunu uzatmak için sunucuyu çağıran bir bölümü kaldırdım.

var state ="L"; 
var timeoutPeriod = 540000; 
var oneMinute = 60000; 
var sevenMinutes = 60000; 

var lastActivity = new Date(); 

function getIdleTime() { 
    return new Date().getTime() - lastActivity.getTime(); 
} 

//Add Movement Detection 
function addMovementListener() { 
    $(document).on('mousemove', onMovementHandler); 
    $(document).on('keypress', onMovementHandler); 
    $(document).on('touchstart touchend', onMovementHandler); 
} 
//Remove Movement Detection 
function removeMovementListener() { 
    $(document).off('mousemove', onMovementHandler); 
    $(document).off('keypress', onMovementHandler); 
    $(document).off('touchstart touchend', onMovementHandler); 
} 

//Create Movement Handler 
function onMovementHandler(ev) { 
    lastActivity = new Date(); 
    console.log("Something moved, idle time = " + lastActivity.getTime()); 
} 

function hide() { 
    $('#overlayTY').removeClass('opened'); // remove the overlay in order to make the main screen available again 
    $('#overlayTY, #modal-session-timeout').css('display', 'none'); // hide the modal window 
    $('#modal-session-timeout').attr('aria-hidden', 'true'); // mark the modal window as hidden 
    $('#modal-session-timeout').removeAttr('aria-hidden'); // mark the main page as visible 
} 

if (state == "L") { 
    $(document).ready(function() { 
     //Call Event Listerner to for movement detection 
     addMovementListener(); 
     setInterval(checkIdleTime, 5000); 
    }); 

    function endSession() { 
     console.log('Goodbye!'); 
    } 

    var modalActive = false; 
    function checkIdleTime() { 
     var idleTime = getIdleTime(); 
     console.log("The total idle time is " + idleTime/oneMinute + " minutes."); 

     if (idleTime > sevenMinutes) { 
      var prevFocus = $(document.activeElement); 
      console.log('previously: ' + prevFocus); 
      var modal = new window.AccessibleModal({ 
       mainPage: $('#oc-container'), 
       overlay: $('#overlayTY').css('display', 'block'), 
       modal: $('#modal-session-timeout') 
      }); 

      if (modalActive === false) { 
       console.log(modalActive); 
       $('#modal-session-timeout').insertBefore('#oc-container'); 
       $('#overlayTY').insertBefore('#modal-session-timeout'); 
       modal.show(); 
       $('#modal-overlay').removeClass('opened'); 
       modalActive = true; 
       console.log(modalActive); 
       console.log('the modal is active'); 
       $('.js-timeout-refresh').on('click touchstart touchend', function(){ 
        hide(); 
        modalActive = false; 
        prevFocus.focus(); 
        addMovementListener(); 
        lastActivity = new Date(); 
       }); 

       $('.js-timeout-session-end').on('click touchstart touchend', function(){ 
        hide(); 
        $('#overlayTY').css('display', 'none'); 
        endSession(); 
       }); 
      } 
     } 
     if ($('#overlayTY').css('display') === 'block'){ 
      removeMovementListener(); 
     } 

     if (idleTime > timeoutPeriod) { 
      endSession(); 
     } 
    } 
} 

cevap

0

konu Seslendirme Safari ile olan evet butonuna odağı tetiklemek için vücut elemanları

  • Kullanım JS/jQuery üzerinde klavye/tokatlamak olayları sınırlar bu elemanlar üzerinde ayarlayın; Bununla birlikte, eğer eleman bir H2 ise odaklanmayacaktır çünkü doğal olarak herhangi bir alması beklenmemektedir. Telafi etmek için H2'deki hareket olaylarını belirlemeye çalıştım ancak, Voiceover Safari'nin eleman metnini okumak veya yükü etiketlemek için zamana ihtiyacı var, bu nedenle herhangi bir olayın ateş etmesini önler ve bu, yüklenen bir modda odağı ayarlamaya çalışırken bir sorun yaratır. tıklanabilir bir eleman yerine bir zaman aşımı işlevi. Umarım Apple gelecekte bunu ele alacaktır.

  • 0

    Possibles çözeltiler vücuda

    1. devre dışı bırakma işaretçi etkinlik paylaşımlı görülebilir. Bir kullanıcı odak noktası bir çapa veya düğmeyi ucuz bira bu
    İlgili konular