2017-01-23 4 views
0

먼저 함수를 호출 할 수 있습니다. 을 클릭하고 포커스를 jQuery에서 창에? 내가 시도 :JQuery, 첫 번째 창 클릭, 다음 포커스

$(window).click(function(){ 
    console.log(1); 
}); 

$(document).focus(function(){ 
    console.log(2); 
}); 

$(document).blur(function(){ 
    console.log(3); 
}); 

하지만 $ (문서) .focus 및 .blur 예를 들어, 내가 가진

코드를 작동하지 않습니다 나는 다음 단계를 수행

var isActive = false, wasClick = false; 
$(window).click(function() 
{ 
    if (!$(this).hasClass('button') && !$(this).hasClass('otherElement')) 
    { 
     isActive = false; 
     wasClick = false; 
     console.log('unactive varible'); 
    } 
}); 

$(window).focus(function() 
{ 
    if (wasClick) 
    { 
     isActive = true; 
     wasClick = false; 
     console.log('focus'); 
    } 
}); 

$(window).blur(function() 
{ 
    if (isActive) 
    { 
     wasClick = true; 
     isActive = false; 
     console.log('blur'); 
    } 
}); 

$('.button').click(function() 
{ 
    isActive = true; 
    console.log('button click'); 
}); 

:

  1. 클릭 버튼은
  2. 본인은 progr에 클릭 창에서 오전
  3. 나는 다시 내 페이지를 클릭하여 배경

출력 콘솔 :

button click 
blur 
focus 
unactive varible 

내가 원하는 :

button click 
blur 
unactive varible 

답변

0

를 지금까지 내가 아는 한, 포커스 이벤트 (적어도 모든 브라우저에서) 윈도우 객체에서 신뢰할만한 것은 아닙니다. document.hasFocus()을 사용하여 주기적으로 페이지의 포커스 상태를 확인할 수 있지만, 그게 내가 원하는 것만은 아니다.

+0

오 덕분에, 난 이것에 대해 생각하지 않는다,하지만 난 $에 (창) .focus를 추가 할 때 작동! $ (창) .focus (() 함수를 { 경우 (document.hasFocus())는 false를 돌려; 경우 (wasClick) { 이 isActive = TRUE; wasClick = 거짓; CONSOLE.LOG ('초점');} }); 정말 고마워! –

+0

도와 줘서 기뻐요! –

+0

오, 이건 작동하지 않습니다. 그리고 이것은 몇 가지 버그가 있습니다 .. 때로는 document.hasFocus()를 우회하고 예제 카드를 전환 할 때 흐림 및 포커스 함수가 ​​여러 번 실행됩니다. –