0

基本的に、親フォーム/ページにあるグリッド ビュー (asp) に入力するためのテキスト フィールド入力を受け取るポップアップ ウィンドウがあります。ポップアップから新しく追加されたデータが反映されるように、親にポスト バックします。親ページで。

この流れは Chrome や firefox ではスムーズに進むのですが、同じロジックを IE で使うと妙な問題が発生します。

問題を説明するために、コードの背景を説明します。これは、親ページからポップアップ ウィンドウを開く方法です。

 <asp:Button ID="AddBtn" runat="server" Visible="false" OnClientClick="javascript:OpenChildWindow();" Text="Add"/> 



   function OpenChildWindow()
    {
        //open a new dialog window
        var sFeatures="dialogHeight: 500px;";
        sFeatures += "dialogWidth: 800px;";
        sFeatures += "center: yes;";
        sFeatures += "edge: sunken;";
        sFeatures += "scroll: no;";
        sFeatures += "status: yes;";
        sFeatures += "resizeable: no;";
        var url = 'TransNewEntry.aspx?SomeValue=12345';

        entryWindow=window.showModalDialog(url, 'TransNewEntry', sFeatures);            

    }

これは、ユーザーがポップアップウィンドウの保存ボタンをクリックした後に閉じようとする方法です:

  protected void saveRow(object sender, EventArgs e)
    {
       {/*some code to insert/modify datarow*/
        }
        Response.Write("<script type='text/javascript'> window.open('','_self',''); window.close();</script>");
    }

したがって、現在のウィンドウを閉じる代わりに(ポップアップウィンドウの)保存ボタンをクリックすると、新しいウィンドウ(既に開いているポップアップウィンドウの複製)が開き、新しく開いたウィンドウが閉じます。

「window.open('','_self','');」を使用したことに注意してください。「window.close」の前に「window.close」のみを使用する場合、IEは新しく開いたポップアップを閉じる必要があるかどうかについて確認ボックスをスローしますが、関係なく重複したポップアップを開きます。

4

0 に答える 0