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>

これは、webapp が非モーダル ウィンドウで実行されているが、モーダル ウィンドウ内では実行されていない場合に機能します。

モーダルウィンドウで開くアプリケーションを制御できないため、ウィンドウの開き方を変更することはできません...

何か案は?

4

1 に答える 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 に答える