子画面で選択した画像が親画面に反映されない
初めまして。
子画面にて選択した画像が親画面でリドローされないという
事象で困っています。
親画面は再ロードしない仕様なのでonloadはできません。
ちなみに、IE6では正常に動作するのですがIE7では動作しま
せん。
もしお分かりになられる方がいらっしゃったら
回答ください。
【実現したい要件】
親画面には、画像を表示する領域があります。
この領域には、合成前のあるimgファイルを表示しています。
この親画面の合成前のimgファイルに、子画面より選択したimgファイルを
合成して画像領域のみリドローすることが目的です。
以下は詳細ですが、
親画面にて「画像選択」ボタンを押下すると子画面POPUPがオープンします。
この子画面POPUPでは、画像ファイルを選択することができます。
子画面POPUPにて画像imgファイルを表示しており、その画像から一つ
選択(画像の下の選択ボタンをClick)すると
1.子画面POPUPをCloseする
2.合成前のimgファイルと選択したimgファイルを合成して
合成後のimgファイルを作成・・・phpで実装(この部分は正常に動作)
3.親画面の画像表示領域のみリドローする
→3の部分が正常に動作しない。
【環境】
サーバ:Apache
言語:Javascript、php
ブラウザ:IE7→バージョン:7.0.5730.13
※IE6であれば正常に動作します。
環境の問題でしょうか?
【実装しているソース】
・子画面
// 画像が選択された場合
function selectImg(id) {
var xmlHttp = createHttpRequest();
// 画像合成処理の開始(Actionが終了するまで次の動作を行わない)
xmlHttp.open("GET", "./?action_XXXXX=1&XXXXXXXXXXXX, false);
xmlHttp.send(null);
var key = "img" + id;
window.returnValue = key;
window.close();
}
function createHttpRequest() {
if(window.ActiveXObject) {
//Win e4,e5,e6用
try {
return new ActiveXObject("Msxml2.XMLHTTP") ;
} catch (e) {
try {
return new ActiveXObject("Microsoft.XMLHTTP") ;
} catch (e2) {
return null ;
}
}
} else if(window.XMLHttpRequest){
//Win Mac Linux m1,f1,o8 Mac s1 Linux k3用
return new XMLHttpRequest() ;
} else {
return null ;
}
}
・親画面
//子画面のOPEN、モーダル表示
function sozai_get_open(id){
//子画面の画像表示を検索するためのACTION
var url="./?action_XXXXXXXXXX=1&XXXXXXXX;
var key = window.showModalDialog(url,window,"dialogWidth=600px; dialogHeight=650px;");
// window.open(url,"XXXXXXXXXXXXXXXXXXX","width=600,height=600,scrollbars=yes,status=yes,location=yes,resizable=yes");
if (key) {
//画像表示領域のリドロー(合成前の画像と合成後の画像保管場所は同じ)
document.getElementById(key).src = document.getElementById(key).src;
}
}