- PR -

XP SP2 と showModalDialog

投稿者投稿内容
JOJO
会議室デビュー日: 2009/01/19
投稿数: 11
投稿日時: 2009-03-05 11:33
お世話になっております、JOJOです。

教えていただきたいのことがありますが、よろしくお願いいたします。

JSのshowModalDialogで検索子画面を作ったが、サーバ(Win2003 + IE6.0)で正常に動いてます。 あるクライアント(WinXP SP2 + IE7.0)で正常に動けないです。(ブランクウィンドウも出て、親画面で戻り値をもらえない、或はエラーが出る)

ちょっと調べると、XP SP2と関係がある。

XP SP2にshowModalDialog関数を使えないか? 有効な対応方法は何ですか?

どちら方は分かったら、教えていただけませんか?

よろしくお願いいたします。
JOJO
会議室デビュー日: 2009/01/19
投稿数: 11
投稿日時: 2009-03-05 15:22
XP SP2にshowModalDialog関数を絶対に使えないという証拠を見つけませんでしたが、もしこの関数を使いたいだったら、どうすればいい? 解決策がないの?

よろしくお願いいたします。
レイル
常連さん
会議室デビュー日: 2008/10/14
投稿数: 37
投稿日時: 2009-03-05 15:50
HEADタグ内に"_self"入れてもだめですか?

<base target="_self" />
JOJO
会議室デビュー日: 2009/01/19
投稿数: 11
投稿日時: 2009-03-05 16:07
お返事ありがとうございます。

<base target="_self" />はHEADタグ内に入ってますが、この状況が出てますね。
ごん太
大ベテラン
会議室デビュー日: 2002/07/30
投稿数: 182
お住まい・勤務地: 森の中
投稿日時: 2009-03-05 17:31
引用:

JOJOさんの書き込み (2009-03-05 11:33) より:

ちょっと調べると、XP SP2と関係がある。

XP SP2にshowModalDialog関数を使えないか?




どの様にsp2と関係があったのでしょうか?

因みに私の環境ではクライアントがXP sp2 でも使えています。

今記述されているコードを記入頂ければ解るかもしれません。
レイル
常連さん
会議室デビュー日: 2008/10/14
投稿数: 37
投稿日時: 2009-03-05 17:43
うちでも普通に使用できますね。
エラーが出るとの事ですが、どの様なエラーが出るのでしょうか?
ブランクウィンドウが出ると事ですが、表示したいウィンドウは表示出来るのでしょうか?
JOJO
会議室デビュー日: 2009/01/19
投稿数: 11
投稿日時: 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 ]
JOJO
会議室デビュー日: 2009/01/19
投稿数: 11
投稿日時: 2009-03-05 18:17
レイルさん、ご返事ありがとうございます。

正常に動けないのは、親画面のボタンをクリックして、ブランクウィンドウと子ウィンドウは同時に出た、そして子ウィンドウで検索処理を行って、情報が親ウィンドウに戻れない。

よろしくお願いいたします。

[ メッセージ編集済み 編集者: JOJO 編集日時 2009-03-05 18:59 ]

スキルアップ/キャリアアップ(JOB@IT)