2011-09-05 6 views
2

그 문제가 있습니다. 페이지가 현재 탭에로드되어 있는지 또는 현재 페이지에로드되어 있는지에 따라 변수를 false/true로 설정해야합니다. 비활성 탭.Firefox에서와 같이 Chrome에서 페이지로드시 window.onBind의 초기 트리거링을 얻는 방법

var hasFocus = false;  
$(function() { 
    $(window).focus(function() { 
     hasFocus = true; 
    }); 
}); 

파이어 폭스 그리고 내가하고 싶은 일을 즉 : 그래서 포커스 이벤트와 함께 할 시도, 더 많거나 적은 같은 (이것은 jQuery의) 페이지가 활성 탭에로드 된 경우 이벤트입니다 즉시 트리거되고 배경 탭에로드되며 탭이 활성화 될 때만 이벤트가 트리거됩니다.

크롬을 사용하지만 페이지가 현재 활성 탭에로드 될 때 이벤트가 트리거되지 않습니다. 아무도 이것에 대한 해결 방법을 알고 있습니까? 나는 또한 mouseenter, hover와 같은 이벤트를 시도했지만 불행히도 비활성 탭에서도 pageload에서 실행됩니다. 미리 감사드립니다!

답변

1

까다로운 방법이 될 것입니다.

setInterval/setTimeout은 Chrome의 비활성 탭의 경우 최대 1 초에 한 번만 실행됩니다. 예를 들어 간격 (또는 시간 초과)을 설정하면 10ms. 훨씬 긴 시간 (예 : 1 초) 후에 만 ​​실행되는 경우 페이지가 비활성 상태 여야합니다. 그렇지 않으면 10ms로 실행됩니다 (설정 한 것처럼).

1

mousemove를 이벤트로 사용하는 것이 좋습니다.

var humanHasInteracted = false;  
$(function() { 
    $(window).mousemove(function() { 
     humanHasInteracted = true; 
    }); 
}); 

대안/바인딩을 사용하여 상기 제 mousemovement가 검출 될 때 이벤트 핸들러를 제거 할 수 있도록 바인딩 해제.

관련 문제