Решение: добавить слушателей ко всем кадрам
<head>
...
<script type="text/javascript">
onBlur=function(event) { window.focusFlag = false; };
onFocus=function(event){ window.focusFlag = true; };
function createFocusListeners()
{
window.focusFlag = true;
if (/*@cc_on!@*/false) { // check for Internet Explorer
document.onfocusin = onFocus;
document.onfocusout = onBlur;
} else if (typeof window.addEventListener != "undefined"){
document.getElementById('topFrame').contentWindow.addEventListener('focus',onFocus, false);
document.getElementById('topFrame').contentWindow.addEventListener('blur',onBlur, false);
document.getElementById('leftFrame').contentWindow.addEventListener('focus',onFocus, false);
document.getElementById('leftFrame').contentWindow.addEventListener('blur',onBlur, false);
document.getElementById('mainFrame').contentWindow.addEventListener('focus',onFocus, false);
document.getElementById('mainFrame').contentWindow.addEventListener('blur',onBlur, false);
window.addEventListener('focus',onFocus, false);
window.addEventListener('blur',onBlur, false);
}
};
//main frame is constantly reloaded, must add listener after each reload
window.createMainFrameFocusListeners = (function () {
if (typeof window.addEventListener != "undefined"){
document.getElementById('mainFrame').contentWindow.addEventListener('focus',onFocus, false);
document.getElementById('mainFrame').contentWindow.addEventListener('blur',onBlur, false);
}
});
</script>
</head>
<frameset rows="32,*" cols="*" onload="createFocusListeners();">
<frame id="topFrame" src="MenuFrame.jspx" name="topFrame" scrolling="NO" noresize="noresize"/>
<frameset rows="*" cols="280,*">
<frame id="leftFrame" src="TreeFrame.jspx" name="leftFrame" scrolling="NO"/>
<frame id="mainFrame" src="ListView.jspx" name="mainFrame" scrolling="NO"/>
</frameset>
</frameset>