0

ASP.NET Web アプリケーションには、メイン ウィンドウ (Default.aspx またはホーム ページ) と子ウィンドウ (新しい aspx ページ) があります。URLを指定してwindow.open()メソッドを使用してボタンクリックでjavascriptを使用して子ページを開くと。ボタン クリック イベントの C# コード:

protected void BtnChildPage_Clicked(object sender, ImageClickEventArgs e)
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        sb.Append(@"<script language='javascript'>");
        sb.Append(@"OpenChildPage('" + sQueryString + "')");
        sb.Append(@"</script>");

        //register startup script with button
        ScriptManager.RegisterStartupScript(BtnPartMemo, this.GetType(), sScriptName, sb.ToString(), false);
    }

子ページを開く Javascript コード:

var childmWindow;
function OpenChildPage(sQueryString) {

    var width = 655;
    var height = 508;
    var left = (screen.width - width) / 2;
    var top = (screen.height - height) / 2;
    var params = 'width=' + width + ', height=' + height;
    params += ', top=' + top + ', left=' + left;
    params += ', directories=no';
    params += ', location=no';
    params += ', menubar=no';
    params += ', resizable=yes';
    params += ', scrollbars=yes';
    params += ', status=yes';
    params += ', toolbar=no';
    childmWindow = window.open('DirectoryName/ChildPage.aspx' + '?ViewerId=' + sQueryString,
                                'Child Page' + sViewerId, params);
    childmWindow.focus();

}

子ウィンドウはメイン ウィンドウの前に表示されません。window.open() メソッドを呼び出した後に window.focus() を試しましたが、開いた後に子ウィンドウが非表示になります。

この動作は、Win XP を使用して IIS 5.1 にアプリケーションを展開した後にのみ観察されます。コードから実行している間はそれに応じて動作しますが、IIS にデプロイした後、開いた後に子ウィンドウを非表示にします。

この動作を克服する方法は?

4

1 に答える 1

0

私が理解している限り、メインページの前にある小さなウィンドウで子ウィンドウを開く必要がありますか? これが正しければ、これが役立つはずです:

window.open('DirectoryName/ChildPage.aspx','_blank', params);

うまく'_blank'いくが、何らかの理由で「'Child Page' + sViewerId」が必要になる場合

window.open('DirectoryName/ChildPage.aspx','_blank'+'Child Page' + sViewerId, params);

最初に_blankを使用する必要があります。そうしないと機能しません(最初にコメントしたかったのですが、何らかの理由でコメントできないので、役に立てば幸いです)。

于 2013-04-24T07:56:50.803 に答える