2009-12-03 5 views
6

매분마다 동작을 수행하는 웹 애플리케이션을 작성 중이므로 (매우 짧게) 브라우저가 중단됩니다. 성가심을 최소화하기 위해 webapp을 표시하는 탭이 표시되지 않을 때이 작업을 일시 중지하고 싶습니다. 최신 버전의 Firefox에서 Javascript를 사용하여이 작업을 수행 할 수 있습니까?Firefox에서 탭 표시 여부 확인

편집 :가 좀 JS 코드가 실행되는 탭의 표시 여부를 확인하는 방법에 대한 부탁 해요, 명확히하기 위해 -하지 일시 정지하는 방법/브라우저를 중단 작업을 다시 시작합니다.

답변

7
var isFocused = true; 

window.onblur=function(){ 
    if(isFocused==true){ 
    isFocused=false; 
    } 
} 

window.onfocus = function(){ 
    isFocused = true; 
} 

이제는 isFocused가 true 인 경우에만 1 분 또는 2 분마다 수행하는 작업이 수행됩니다. 그것은 당신의 페이지/webapp의 탭이 집중 될 때입니다.

+0

if (isFocused == true) 확인 이유는 무엇입니까? –

+0

디버깅 도중 경고를 사용하고 있었는데, 이것이 나타 났을 때 blur 이벤트를 발생 시켰습니다. 또한 파이어 폭스는 자바 스크립트를 인식하지 못하고 실시간으로 탭을 전환하는 것에 대해 매우 정확하게 알려줍니다. (내가 경험 한 애드온을 통해 알 수 있습니다.) 때로는 이러한 이벤트가 두 번 실행되는 경우도 있습니다 ... 코드에 따라, 이것은 무해하거나 완전히 망칠 수 있습니다. 그래서, 나는 단지 변수가 'unfocussed'로 설정되어 있는지 확인하고 있습니다. 이미 'unfocussed'일 때 'unfocussed'로 변경하는 이유는 무엇입니까? 뭐라 구요? –

+0

나는 본다. 그러나 if 문은 실제로 내부에서 뭔가를 수행하는 경우에만 의미가 있습니다 (행을 두 번 실행하면 페이지가 엉망이됩니다). 이 구체적인 경우에는 변수가 동일한 값으로 두 번 설정 되어도 상관 없으므로 완전히 중복됩니다. –

2

은 이것에 대해 테스트,하지만 어떻게하지 : 파이어 폭스는 별도의 창으로 탭에서 윈도우 흐림을 처리하는 경우

window.onblur() = function() { ... pause your script here }

모르겠어요.

+0

방금 ​​시도해 보았습니다. jblery를 사용하여 onblur에 이벤트 처리기를 연결했습니다. –

+0

'onblur()'가 단지'onblur'이어야한다는 것 외에도, 나는 그것이 작동 할 수 있다고 생각합니다. 그러나, 내가 정말로하고 싶은 것은 창에 현재 포커스가 있는지 여부를 확인할 수 있습니다. –

1

웹 페이지의 스크립트에서 브라우저 창에 액세스 할 때 보안상의 이유로 (권한있는 스크립트에만 허용됨) window.onblur 이벤트를 사용해야한다고 생각합니다.

하위 창이나 웹 페이지에서 브라우저 창에 액세스하려는 작업은 Mozilla Developer Center에 설명되어 있지만 권한있는 스크립트 만 가능하다는 것을 알 수 있으며 " 미션이 거부되었습니다 "라는 오류 메시지가 표시됩니다.