2009-05-06 26 views
7

내 페이지는 창이 배경에있을 때만 알림 소리를 내야합니다. 포커스 상태가 변경 될 때 통지하기 위해 window.onfocuswindow.onblur 이벤트를 추적 할 수 있습니다. 그러나, 예를 들어, 배경 탭에로드 될 수 있기 때문에 윈도우의 포커스가로드되는지 여부는 알 수 없습니다.브라우저 창에 포커스가 있는지 여부를 어떻게 확인할 수 있습니까?

onfocus/onblur 이벤트가 발생하기 전에 소리를 재생할지 여부를 어떻게 결정합니까?

답변

2

흐리게 처리되었다고 가정하고 모든 유형의 이벤트 (keydown/mousemove)를 수신하자마자 상태를 집중 형으로 변경할 수 없습니까?

+0

좋습니다. 완벽한 솔루션은 아니지만 작동하는 것이 가장 좋습니다. – Peeja

+2

흐린 창에서 마우스를 움직이더라도'mousemove'가 실행됩니다. 대신'mousedown'을 사용하십시오. 여기에서 사용해보십시오 : http://www.quirksmode.org/dom/events/tests/mousemove.html –

0

페이지가 처음 열릴 때 (on foreground) onfocus 이벤트가 발생해야합니다. 적어도 그것은 FF3/IE8에 있습니다.

처음에는 소리가 들리고 onfocus가 발생하면 소리를 끈 다음 onblur가 울리면 다시 켤 수 있습니다.

+0

누군가가 새 탭으로 전환 할 때 새 탭으로 전환하는 옵션을 해제해도? (알고 싶지 않기 때문에 묻지 않는다.) – chaos

+0

나를 위해, 새 탭 (백그라운드에서)을 열었을 때 onfocus가 트리거되지 않았습니다. 탭으로 전환하면 트리거가 발생했습니다. 소리로 시작하면 정상적으로 작동할까요? 탭이 포 그라운드에서 열리면 소리가 들리지만 onfocus 이벤트는 소리를 즉시 끄게됩니다. 탭이 백그라운드에서 열려 있으면 해당 탭으로 전환 할 때까지 소리가 계속 켜져 있습니다. –

+0

IE8에서 같은 방식으로 작동합니다. –

관련 문제