- - PR -
XP SP2 と showModalDialog
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-03-05 11:33
お世話になっております、JOJOです。
教えていただきたいのことがありますが、よろしくお願いいたします。 JSのshowModalDialogで検索子画面を作ったが、サーバ(Win2003 + IE6.0)で正常に動いてます。 あるクライアント(WinXP SP2 + IE7.0)で正常に動けないです。(ブランクウィンドウも出て、親画面で戻り値をもらえない、或はエラーが出る) ちょっと調べると、XP SP2と関係がある。 XP SP2にshowModalDialog関数を使えないか? 有効な対応方法は何ですか? どちら方は分かったら、教えていただけませんか? よろしくお願いいたします。 | ||||
|
投稿日時: 2009-03-05 15:22
XP SP2にshowModalDialog関数を絶対に使えないという証拠を見つけませんでしたが、もしこの関数を使いたいだったら、どうすればいい? 解決策がないの?
よろしくお願いいたします。 | ||||
|
投稿日時: 2009-03-05 15:50
HEADタグ内に"_self"入れてもだめですか?
<base target="_self" /> | ||||
|
投稿日時: 2009-03-05 16:07
お返事ありがとうございます。
<base target="_self" />はHEADタグ内に入ってますが、この状況が出てますね。 | ||||
|
投稿日時: 2009-03-05 17:31
どの様にsp2と関係があったのでしょうか? 因みに私の環境ではクライアントがXP sp2 でも使えています。 今記述されているコードを記入頂ければ解るかもしれません。 | ||||
|
投稿日時: 2009-03-05 17:43
うちでも普通に使用できますね。
エラーが出るとの事ですが、どの様なエラーが出るのでしょうか? ブランクウィンドウが出ると事ですが、表示したいウィンドウは表示出来るのでしょうか? | ||||
|
投稿日時: 2009-03-05 18:00
ごん太さん、ご返事ありがとうございます。
「Windows XP SP2 (Service Pack2)でのJavaScriptの動作に関して」を参照しました。 http://www.openspc2.org/JavaScript/WinXPsp2/ じゃ、簡単なコードで今の状況を説明させていただきます。 ------------------------------------------------------------------------------- 親画面ファイル: //ユーザ検索 function openUserSearchWindow(hdnID,lblUserName) { // 子画面の呼出 recvVal = openWindowModal("VS1001","../WebVS1001/VS1001.aspx",null); // 子画面からの返却情報の受取 if(recvVal != undefined) { document.getElementById(hdnID).value = recvVal[0]; document.getElementById(lblUserName).value = recvVal[1]; } } ------------------------------------------------------------------------------- JSファイル: // モーダル子画面の出力 function openWindowModal(id,url,args){ VS1001_opt = "status:false;dialogWidth:624px;dialogHeight:500px" VS1002_opt = "status:false;dialogWidth:850px;dialogHeight:750px" switch(id){ case "VS1001": recvVal = showModalDialog(url,args,VS1001_opt); break; case "VS1002": recvVal = showModalDialog(url,args,VS1002_opt); break; } return recvVal; } ------------------------------------------------------------------------------- 子画面ファイル: (VS1001.aspx) <HEAD> <title>ユーザ検索</title> <uc1:commonpageheader id="CommonPageHeader1" runat="server"></uc1:commonpageheader> <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR"> <meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE"> <meta content="JavaScript" name="vs_defaultClientScript"> <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema"> <base target="_self"> </HEAD> (VS1001.aspx.vb) //検索した結果をクリックして、親が面に戻る Private Sub dtgSearchResult_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dtgSearchResult.ItemDataBound If (Not e.Item.FindControl("lnkCompanyNo") Is Nothing) Then Dim CompanyNo As String = CType(e.Item.FindControl("lnkCompanyNo"), HyperLink).Text Dim CompanyID As String = e.Item.Cells(4).Text Dim Name As String = e.Item.Cells(2).Text Dim sendResult As System.Text.StringBuilder sendResult = New System.Text.StringBuilder With sendResult .Append("sendVal = new Array();sendVal[0] = '") .Append(CompanyID) .Append("';sendVal[1] = '") .Append(Name) .Append("';window.returnValue = sendVal;window.close();") End With CType(e.Item.FindControl("lnkCompanyNo"), HyperLink).Attributes("onClick") = sendResult.ToString End If End Sub ------------------------------------------------------------------------------- コードは大体こういう感じですね。 ちなみに、IEの設定に対して特に要求がある? よろしくお願いいたします。 [ メッセージ編集済み 編集者: JOJO 編集日時 2009-03-05 19:11 ] | ||||
|
投稿日時: 2009-03-05 18:17
レイルさん、ご返事ありがとうございます。
正常に動けないのは、親画面のボタンをクリックして、ブランクウィンドウと子ウィンドウは同時に出た、そして子ウィンドウで検索処理を行って、情報が親ウィンドウに戻れない。 よろしくお願いいたします。 [ メッセージ編集済み 編集者: JOJO 編集日時 2009-03-05 18:59 ] |