用户切换浏览器选项卡时如何从JApplet隐藏JDialog?

大家伙 :

问题:用户从小程序开始长时间操作;显示带有进度条的JDialog。用户打开/切换到另一个浏览器选项卡-仍然显示JDialog(并惹恼用户)。

当用户切换到另一个选项卡时,JDialog应该被隐藏;并在用户切换回时再次显示。

注意:我看到了类似问题的问题,解决方案是添加windowActivated / deactivated监听器。它对我不起作用,因为窗口中有多个框架,其中一个框架包含applet。当用户单击另一个框架时,将强制执行windowDeactivate事件,但用户仍在同一选项卡中。

大家伙 :

解决方案:将侦听器添加到所有帧

<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>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

切换浏览器选项卡时使光标不选择文本字段

Typed.js 文本动画在浏览器选项卡切换时暂停

更快的导航或在浏览器选项卡之间切换

使用带有Java的Selenium WebDriver在浏览器选项卡之间切换

当像Firefox浏览器一样打开更多选项卡时,我们如何获得导航切换

如何始终隐藏片段切换器选项卡

在TabControl中的选项卡之间切换后,浏览器显示空白页

检测用户是否切换选项卡或最小化浏览器窗口并分别处理它们

用户单击关闭选项卡时如何打开新窗口浏览器?

硒驱动程序通过在浏览器中切换选项卡而冻结

React JS:能够在浏览器中检测切换选项卡

用于在移动浏览器上切换选项卡的 php/html 链接

当用户关闭基于 django2.0 的网站上的选项卡或浏览器时,如何强制注销用户

当用户在mat选项卡之间切换时,重新启动表单

我可以强制“ firefox”命令行应用程序不要在打开的浏览器中切换活动选项卡吗?

当浏览器选项卡隐藏且不活动时,Chrome(和其他浏览器)如何处理设置为高于 1000 毫秒的“setTimeout”?

当用户离开我的站点时如何在浏览器中更改选项卡名称

切换选项卡时,BottomNavigationView标题隐藏

如何从子组件切换材质选项卡

使用Android TabLayout时,单击选项卡不会切换当前选项卡

如何隐藏来自浏览器网络选项卡的 XHR 请求

如何在 Mozilla Firefox 浏览器中隐藏选项卡上方的栏

如何在不同选项卡下的导航控制器之间切换?

useEffect挂钩,用于在用户关闭浏览器选项卡时保存到localStorage

当用户关闭浏览器选项卡时,我想将数据发布到API

打开并在选项卡之间切换时,如何更新FirefoxDriver(WebDriver)对象?

如何在切换相应选项卡时从 JTabbedPane 从 JPanel 调用函数?

在React Native Navigation中的选项卡之间切换时如何保持堆叠的屏幕

如何在单击“保存”按钮时切换选项卡,或者如何将“保存”按钮绑定到“切换”选项卡