2014-06-18 3 views
1

Venobox modal을 사용 중이며 ADA 지원이 필요합니다. 내가 잘 작동하도록하기 위해 몇 가지를 조정했지만 한 장 더 필요합니다. 닫기 버튼을 누를 때 모달을 여는 요소 a.venobox으로 돌아가려면 집중해야합니다.모달 종료 후 초점 반환

다른 말로하면, 사용자가 사이트를 탭 이동하고, 모달을 연 다음 닫은 다음 다시 탭하면 중단 된 위치에서 다시 가져옵니다.

tabindex을 삽입하려고 시도했지만 첫 번째 탭에서만 작동하고 페이지의 맨 위로 돌아갑니다. 그런 다음 초점을 잡기 위해 무언가를 추가 한 다음 닫을 때 되돌리려 고 시도했지만 js에는 최선이 아닙니다.

감사

내 현재 코드

: var focusReturn = $(this).focus();에만 초점 기능 (which is the element it was called on)의 반환 값에 사용자 정의 변수를 설정합니다 설정

$(document).ready(function(){ 
    $('.venobox').venobox().click(function() {  
    $('.vbox-close').attr('tabindex', '1').attr('title','Close Modal'); 

    var focusReturn = $(this).focus();  
    $(".vbox-close").click(function(){ 
     return focusReturn; 
    }); 

    }); 
}); 

답변

0

. 또한, 당신은 아마 할 무엇을 의미

the return value in an event handler is only used to prevent default event propagation.var focusReturn = $(this).focus; 다음 클릭 핸들러 내부 focusReturn();로 전화를했다. 그러나 비 기능적 문제에 대한 기능적 접근 방식이므로이 문제에 대해 권장 할 것입니다. 그리고 자바 스크립트와 같이 기능이없는 언어로 기능적으로 작성하는 것은 읽기가 어렵습니다.

그러나, 이렇게하는 일반적인 (더 상식) 방법이있다 :

// don't need this line // var focusReturn = $(this).focus();  
$(".vbox-close").click($.proxy(function() { 
    $(this).focus(); 
}, this)); 

jQuery's proxy function 함수가 실행되는 밀폐 컨텍스트를 변경하기 위해 사용된다.

(아마도) 다른 방법은이 이벤트 핸들러를 close 이벤트에 넣고 .vbox-close에 배치하는 것입니다. 그러나이 플러그인으로 어떤 이벤트가 지원되는지 잘 알지 못합니다. 대화 상자 c (sh) ould가 아마도 닫기 버튼을 클릭하는 것보다 더 많은 방법으로 닫혀있을 것이기 때문에 확실히 조사 할 가치가 있습니다.

0

포커스를 캡처하고 모달을 언로드 할 때 재설정하지 않기 위해 setTimeout을 사용해야하는 번거 로움이 있습니다. 이것을 필요로하는 다른 사람들을 위해 여기 있습니다.

$(document).ready(function(){ 
    $('.venobox').venobox().click(function() { 

     focusclick = this; 

     $('.vbox-close').click(function() {  
      setTimeout("focusclick.focus()",500); 
     }); 

    });  
});