■適用後の動作
2006年2月にMicrosoft社から公開されたWindows更新プログラム(KB912945)を適用すると、MSIE上でGEOSIS-OCX(以降GEOSIS)を利用する際に、GEOSIS上でマウスクリックするか、GEOSISにフォーカスを移動し、スペースキー又はエンターキーの押下が必要となります。
■対応
弊社が調査した対応方法として、以下の3つの方法が挙げられます。
1.KB912945をアンインストールする。
コントロールパネル内の「プログラムの追加と削除」から更新プログラム(KB912945)をアンインストールします。
アンインストールする事で、今までの動作が継続されます。
※KB912945のアンインストールはお客様自身の判断で行って下さい。
※お客様自身が行ったKB912945のアンインストールで発生した弊害に関して、弊社では保証致しかねますので御了承下さい。
2.innerHTML、outerHTMLを使用する。
<object>タグが記述されている箇所をinnerHTML又はouterHTMLによってページ読込み時に対応します。
<HEAD> </HEAD> <BODY> <OBJECT id=Geo style="LEFT: 10px; WIDTH: 609px; TOP: 21px; HEIGHT:436px" classid="clsid:91016F80-4706-11CF-88CB-0000F4D82418" VIEWASTEXT> <PARAM NAME="_Version" VALUE="65536"> <PARAM NAME="_ExtentX" VALUE="16113"> <PARAM NAME="_ExtentY" VALUE="11536"> <PARAM NAME="_StockProps" VALUE="1"> <PARAM NAME="BackColor" VALUE="16777215"> <PARAM NAME="PathWork" VALUE=""> : : : <PARAM NAME="CacheVect" VALUE="8000000"> <PARAM NAME="CacheRaster" VALUE="2000000"> </OBJECT> </BODY>
outerHTMLを使用したソース
<HEAD> <SCRIPT src="exOCX.js" language="JavaScript"></script> </HEAD> <BODY> <DIV id="GEODIV"> </DIV> <SCRIPT language="JavaScript"> CreateGeosisOcx('GEODIV'); </SCRIPT> </BODY>
CreateGeosisOcx関数は、例えば下記の様に記述します。
CreateGeosisOcx関数を記述したソース例(exOcx.js)
function CreateGeosisOcx(TagID) { var PathVect = "http://NCG/VXY/"; var PathBmp = "http://NCG/BMP/"; var PathRaster = "http://NCG/RAS/"; var PathTable = "http://NCG/TAB/"; var d = document.getElementById(TagID); d.outerHTML = "<OBJECT id='Geo' style='LEFT: 10px; WIDTH: 609px; TOP: 21px; HEIGHT: 436px' classid='clsid:91016F80-4706-11CF-88CB-0000F4D82418' VIEWASTEXT>" + "<PARAM NAME='_Version'VALUE='65536'>" + "<PARAM NAME='_ExtentX'VALUE='16113'>" + "<PARAM NAME='_ExtentY'VALUE='11536'>" + "<PARAM NAME='_StockProps'VALUE='1'>" + "<PARAM NAME='BackColor'VALUE='16777215'>" + "<PARAM NAME='PathWork'VALUE=''>"+ : : : "<PARAM NAME='CacheVect' VALUE='8000000'>" + "<PARAM NAME='CacheRaster' VALUE='2000000'>" + "</OBJECT>"; }
3."showModalDialog"を使用している箇所を"window.open"に変更する。
OCXを使用しているウィンドウを"showModalDialog"を使用してモーダルダイアログとして表示している場合、"window.open"に変更する事でマウスクリック等でActiveXをアクティブ化した後に使用する事が出来ます。
弊社調査では、"showModalDialog"を使用して表示させたウィンドウでは、アクティブ化を行っても動作しない場合がほとんどでしたが、"window.open"を使用している場合は、アクティブ化を行えば問題無く動作しました。
※showModalDialogの戻り値を使用しているようなコーディングをしている場合には注意が必要です。
※弊社独自で調査した結果で、全てのActiveXが同様の動作をするとは限りませんので御注意下さい。