Solution: add listeners to all frames
<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>
source share