0

このトピックに関する質問はたくさんありますが、私の状況が解決されていないので、私のシナリオについて説明します。

ポップアップウィンドウがあります。閉じるには 2 つの方法があります。ポップアップ ウィンドウ内の閉じるボタンを押すか、ウィンドウの右上隅にある [x] ボタンを押します。それらはまったく同じ効果があります。x を無効にすることができればそうしますが、それは不要であり、お気に入りのブラウザーですぐに発生することはありません。本質的に、私はウィンドウが閉じられたときにいくつかの後処理を行っており (実際にはセッションのクリーンアップ)、ユーザーを苛立たせるために無限の新しいポップアップ ウィンドウを生成していません。私を信じてください、顧客はこの動作を求めました.

したがって、window.onunload を実行するか、body onunload を実行できます。どちらの方法でも、希望する結果が得られます。ただし、問題を複雑にする 3 つ目のシナリオがあります。ポップアップ ウィンドウ内で、そのポップアップ ウィンドウの内容を変更するフォーム送信が存在する場合があります。この場合、自分のページでどちらを設定したかに応じて、window.onunload または body unload が呼び出されます。これは私が望むものではありません。ポップアップウィンドウが視覚的に見えなくなったときに後処理を実行したい(xまたは閉じるボタン)が、フォームの送信が行われたときにポップアップをこの画面に表示したままにして後処理しないでください。

誰でもこのシナリオについて話すことができますか?

編集: window.onunload をトリガーしないソリューションでの私の試み

    function searchFieldTitles()
{
    var searchOptionValue;
    var radioObj = document.getElementsByName("searchOption");
    var radioLength = radioObj.length;
    for(var i = 0; i < radioLength; i++) {
        if(radioObj[i].checked) {
            searchOptionValue = radioObj[i].value;
            break;
        }
    }

    $.get("/myroot/SearchFieldTitles.action", 
            {filterString: document.getElementsByName("filterString")[0].value, 
             searchOption: searchOptionValue, 
             filterBy: document.getElementsByName("filterBy")[0].value},
                  function(data) {                
                  });

      location.href="/myroot/jsp/field_titles/lookupFieldTitles.jsp";
}
4

2 に答える 2

0

これは少し正気ではありませんが、clickすべてのリンク (閉じるボタンを除く) に -handler を追加submitし、そのポップアップのすべてのフォーム送信にハンドラーを追加して、最初にonunloadハンドラーを無効にしてからデフォルトのアクションを続行することができます。そうすれば、ユーザーはフォームを送信し、クリーンアップをトリガーすることなくポップアップ内に新しいページをロードできます。

F5ただし、ユーザーがキーを押してページをリロードする場合、これは役に立ちません。または要素にkeydownハンドラーを追加して、ハンドラーを無効にすることができますhtmlonunloadF5Ctrl-rが押され、ポップアップにブラウザーからのリロード ウィジェットがない場合、ほとんどのページ リロード アクションがキャッチされるようです (ただし、Firefox でのみテストされています)。他のブラウザが他のキーの組み合わせをサポートしている場合は、それらも追加する必要があります。ただし、これはあまりお勧めできません。ページ全体ですべてのキーイベントをキャプチャすると、何がうまくいかないのか不安になります。また、キーの組み合わせに応じてブラウザのリストを維持する必要があり、メンテナンス地獄のように聞こえます。 . 「ここをクリックして更新」というラベルの付いた HTML ボタンをページに追加し、ユーザーがF5.

于 2013-02-09T23:42:18.440 に答える
0

フォームの送信には AJAX を使用できます。ウィンドウをアンロードするたびに、応答を受け取ってウィンドウの内容を変更することもできます。

于 2011-06-16T20:41:38.087 に答える