0

我的 webapp 可以“自行”运行,也可以由另一个 webapp 在模态窗口中打开...

当用户关闭窗口时,我必须清理一些数据,以便捕获关闭窗口的事件并重定向到如下某个操作:

    <script language="JavaScript">
        window.onbeforeunload = function() {
            if ((window.event.clientX < 0) || (window.event.clientY < 0) || (window.event.clientX < -80) || window.event.altKey == true) { // close button or ALT+F4
                window.location.assign('<%=request.getContextPath()%>/borraSemaforo.do');
            }
        };
    </script>

当 web 应用程序在非模态窗口中运行但不在模态窗口内时,此方法有效。

我无法控制在模式窗口中打开我的应用程序,因此我无法对窗口的打开方式进行任何更改......

有任何想法吗?

4

1 回答 1

1

对于应用程序在模式窗口中加载的情况:

一种方法是:

您可以在 onbeforeunload 事件处理程序的窗口中创建一个隐藏的 iframe。在 iframe 中放置动作的 url。

其他方式 -

创建一个指向 url 路径的小模式窗口。在该 url 路径的响应中,发送一个小的 javascript 来关闭模态窗口。

打开 iframe 的代码 - 基本 js

    var i = document.createElement('iframe');
            i.style.display = "none";
            var d = new Date();
            i.id = d.getTime();
    i.onload = function(){
/*Task complete*/
 alert('frame loaded')}
            i.name = "exp" + d.getTime();
            i.src = window.location.protocol + "//" + window.location.host + '<path>';
            document.body.appendChild(i);
于 2013-03-08T08:42:07.623 回答