6

アプリケーションは、asp.net 2.0 を使用して Windows サーバー 2003 ボックスで実行されており、IE 固有の Web アプリです。JavaScript にある関数呼び出しから showModalDialog(...) を使用して iframe でフォームを開くボタンがあります。

関数の例を次に示します。

    function ShowBusinessHoursSubForm( source )
{
    var retval = window.showModalDialog("htm/" + locLocaleID + "/SubFormHostFrame.htm", source, "dialogWidth:265px;dialogHeight:261px;help:no;scroll:no;status:no;");

}

ホスト フレームは、使用されている実際のフォームを含む aspx ページを読み込んでいます。開いているフォームには、クリックすると変更されたフォームを送信するボタンがあります。ただし、フォームが送信される前に変更が行われなかった場合は、フォームに変更がないことを示す別のモーダル ウィンドウがポップアップします。このモーダル ウィンドウは、ボタン クリック イベントに何らかの JavaScript を登録することによって開かれます。コードは次のとおりです (C#)。

string l_S_ErrorScript = "<script type='text/javascript' language='javascript'>window.showModalDialog('htm/" + l_S_Culture + "/NotChangedErrorDialog.htm', '../../" + l_S_SkinPath + "', 'dialogWidth:310px;dialogHeight:145px;scroll:no;help:no;status:no;');</script>";

if(!m_Page.ClientScript.IsStartupScriptRegistered("ErrorScript"))
        {
            m_Page.ClientScript.RegisterStartupScript(this.GetType(), "ErrorScript", l_S_ErrorScript);
        }

ボタンがクリックされ、このダイアログを表示する必要がある場合、次の JavaScript エラーが表示されます。

エラー: オブジェクトはこのプロパティまたはメソッドをサポートしていません

奇妙なことに、ローカルでアプリケーションにアクセスして試してみると、すべて正常に動作しますが、別のコンピューターからアクセスするとエラーが発生します。また、サーバーによっては (すべて Windows Server 2003 でテストするためのサーバーが多数あります)、別のコンピューターでもエラーが発生しない場合があります。これらのコンピュータは、同じバージョンの IE を同じ設定で使用して、同じソフトウェア バージョンを実行しています。どこかに設定上の問題があると思いがちですが、設定が同じであるため、判断するのは困難です。アプリの仕組みや使用されるテクノロジーを実際に変更することはできません。

何がこれを引き起こしているのか、誰にもアイデアがありますか?

4

1 に答える 1

9

この問題は、クライアント マシンの IE のポップアップ ブロッカーにありました。モーダル ウィンドウが別のモーダル ウィンドウで開かれていたため、ポップアップ ブロッカーはそれを親の一部とは見なさず、ブロックする必要があると判断しました。サイトをポップアップブロッカーに追加すると、すべてが機能しました。

ばかげている!

于 2010-04-15T17:21:25.250 に答える