■適用後の動作
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が同様の動作をするとは限りませんので御注意下さい。
