HTMLファイルは、初期化を行う部分、処理を記述する部分および、WSMGR for Webを表示する部分に分かれます。
HTMLファイルの構成の概念図を以下に示します。
注意
F5AAINETCTLはf5aainet2.cabファイルにパッケージ化されています。
OBJECTタグのCLSIDは「5AA57A9F-F528-4930-9D3A-4BFFEA6E5033」を指定してください。また、codeBaseはWSMGR for Webの仮想ディレクトリを指すように「f5aainet2.cab」を指定し、#Version指定は「7,2,20,1」を指定してください。
HTMLのフレームを使用する場合はF5AAINETCTLオブジェクトをトップ(FRAMESETを定義するHTML)に配置してください。
複数のHTMLページでF5AAINETCTLを使用する場合は、F5AAINETCTLのロードと初期化が同時に行われないように記述に注意してください。
F5AAUIMAINオブジェクトをHTMLで利用する場合は、下記サンプルのように記述してください。
実際に動作するHTMLのサンプルは次のようになります。
■JavaScriptの例
1)メインソース
<HTML> <HEAD> <TITLE>WSMGR for Web スクリプトサンプル</TITLE> <OBJECT classid=clsid:5AA57A9F-F528-4930-9D3A-4BFFEA6E5033 codeBase=../f5aainet2.cab#Version=7,2,20,1 id=F5AAINETCTL height=1 width=1 border=0> </OBJECT> <!-- //*************************************************************************** codeBaseに指定されている「../」はWSMGR for Webの仮想ディレクトリへの絶対パス、 または、相対パスとなるように書き換えてください。 但し、絶対パスを指定する場合は「http://サーバ名」は省略しないでください。 例) 絶対パス:「codeBase=http://www.example/wsmgrweb/f5aainet2.cab#Version=7,2,20,1」 相対パス:「codeBase=../f5aainet2.cab#Version=7,2,20,1」 //*************************************************************************** --> </HEAD> <BODY LANGUAGE=javascript oncut="Cancel();" onpaste="Cancel();" oncopy="Cancel();" onselect="Cancel();" onbeforeunload="beforeunloadMsg();" onunload="onUnload();" onfocus="onFocus();" onLoad="onResize();" onResize="onResize();"> <SCRIPT LANGUAGE=javascript src="wsobject.js"></SCRIPT> <SCRIPT LANGUAGE=javascript> <!-- //*** ここを書き換えてください ********************************************** F5AAINETCTL.url = location.href + F5AAINETCTL.codeBase;// WSMGR for WebのURL F5AAINETCTL.user = "user1"; // ユーザ名 F5AAINETCTL.pw = "password"; // パスワード F5AAINETCTL.icon = "接続1"; // 接続アイコン名 //*** ここまで ************************************************************** //*************************************************************************** // F5AAINETCTL.urlはWSMGR for Webの仮想ディレクトリのURLとなるように書き換えて // ください。但し、「http://サーバ名」は省略しないでください。 // 例) // 直接指定 :「F5AAINETCTL.url = "http://www.example/wsmgrweb/";」 // codeBaseが絶対パス:「F5AAINETCTL.url = F5AAINETCTL.codeBase;」 // codeBaseが相対パス:「F5AAINETCTL.url = location.href + F5AAINETCTL.codeBase;」 //*************************************************************************** ret = F5AAINETCTL.init(); if(ret != 0) { alert("初期化エラーです。"); } if(F5AAINETCTL.IsReady) { UimainActiveXCall(F5AAINETCTL.PropID); } function onFocus() { if(F5AAINETCTL.IsReady) F5AAUIMAIN.OnHtmlSetFocus(); } function onUnload() { if(F5AAINETCTL.IsReady) F5AAUIMAIN.OnHtmlUnLoad(); } function beforeunloadMsg() { if(F5AAINETCTL.IsReady) { var msg = F5AAUIMAIN.OnHtmlBeforeUnload(); if(msg.length != 0) event.returnValue = msg; } } function onResize() { if(F5AAINETCTL.IsReady) { var width = document.body.clientWidth; var height = document.body.clientHeight; F5AAUIMAIN.OnHtmlReSize(width,height); } } function Cancel() { event.returnValue = false; } --> </SCRIPT> </BODY> </HTML>
2)外部オブジェクトソース(wsobject.js)
function UimainActiveXCall(param) { document.write("<p>"); document.write("<OBJECT ID='F5AAUIMAIN'"); document.write("CLASSID='CLSID:2AE746E2-7F2E-11D4-BBD2-004854002478'"); document.write("border='0' VIEWASTEXT>"); document.write("<PARAM NAME='PropFile' VALUE=" + param + ">"); document.write("</OBJECT>"); document.write("</p>"); }
■VBScriptの例
1)メインソース
<HTML> <HEAD> <TITLE>WSMGR for Web スクリプトサンプル</TITLE> <OBJECT classid=clsid:5AA57A9F-F528-4930-9D3A-4BFFEA6E5033 codeBase=../f5aainet2.cab#Version=7,2,20,1 id=F5AAINETCTL height=1 width=1 border=0> </OBJECT> <!-- //*************************************************************************** codeBaseに指定されている「../」はWSMGR for Webの仮想ディレクトリへの絶対パス、 または、相対パスとなるように書き換えてください。 但し、絶対パスを指定する場合は「http://サーバ名」は省略しないでください。 例) 絶対パス:「codeBase=http://www.example/wsmgrweb/f5aainet2.cab#Version=7,2,20,1」 相対パス:「codeBase=../f5aainet2.cab#Version=7,2,20,1」 //*************************************************************************** --> </HEAD> <BODY LANGUAGE=vbscript oncut="Cancel()" onpaste="Cancel()" oncopy="Cancel()" onselect="Cancel()" onbeforeunload="beforeunloadMsg()" onunload="onUnload()" onfocus="onFocus()" onLoad="onResize()" onResize="onResize()"> <SCRIPT LANGUAGE=vbscript src="wsobject.vbs"></SCRIPT> <SCRIPT LANGUAGE=vbscript> <!-- '*** ここを書き換えてください *********************************************** F5AAINETCTL.url = document.url & F5AAINETCTL.codeBase ' WSMGR for WebのURL F5AAINETCTL.user = "user1" ' ユーザ名 F5AAINETCTL.pw = "password" ' パスワード F5AAINETCTL.icon = "接続1" ' 接続アイコン名 '*** ここまで *************************************************************** '**************************************************************************** ' F5AAINETCTL.urlはWSMGR for Webの仮想ディレクトリのURLとなるように書き換えて ' ください。但し、「http://サーバ名」は省略しないでください。 ' 例) ' 直接指定 :「F5AAINETCTL.url = "http://www.example/wsmgrweb/"」 ' codeBaseが絶対パス:「F5AAINETCTL.url = F5AAINETCTL.codeBase」 ' codeBaseが相対パス:「F5AAINETCTL.url = document.url & F5AAINETCTL.codeBase」 '**************************************************************************** ret = F5AAINETCTL.init If ret <> 0 Then alert "初期化エラーです。" End If If F5AAINETCTL.IsReady Then UimainActiveXCall(F5AAINETCTL.PropID) End If Sub onFocus() If F5AAINETCTL.IsReady Then F5AAUIMAIN.OnHtmlSetFocus End If End Sub Sub onUnload() If F5AAINETCTL.IsReady Then F5AAUIMAIN.OnHtmlUnLoad End If End Sub Sub beforeunloadMsg() Dim msg If F5AAINETCTL.IsReady Then msg = F5AAUIMAIN.OnHtmlBeforeUnload If msg <> "" Then window.event.returnValue = msg End If End If End Sub Sub onResize() If F5AAINETCTL.IsReady Then doc_height = document.body.clientHeight doc_width = document.body.clientWidth F5AAUIMAIN.OnHtmlReSize doc_width, doc_height End IF End Sub Sub Cancel() window.event.returnValue = false End Sub --> </SCRIPT> </BODY> </HTML>
2)外部オブジェクトソース(wsobject.vbs)
Sub UimainActiveXCall(param) document.write "<p>" document.write "<OBJECT" document.write " ID=F5AAUIMAIN" document.write " CLASSID=CLSID:2AE746E2-7F2E-11D4-BBD2-004854002478" document.write " border=1 VIEWASTEXT>" document.write "<PARAM NAME=PropFile VALUE=" & param & ">" document.write "</OBJECT>" document.write "</p>" End Sub
また、スクリプトの作成作業を容易にするためにサンプルHTMLを用意しました。
サンプルHTMLの格納先は次のようになります。
<インストール先フォルダ配下>\wwwroot\sample\ 例) C:\wsmgrweb\wwwroot\sample\
サンプルHTMLのURLは次のようになります。
<WebサーバのURL>/<仮想ディレクトリ>/sample/ 例) http://www.example/wsmgrweb/sample/
サンプルHTMLの構成は以下のとおりです。
サンプルHTMLについて | default.htm |
基本サンプル(ノーフレーム) | JSample0.htm |
基本サンプル(フレーム) | JSample1.htm、JMenu1.htm、JDspemu.htm |
指定ログオンサンプル | JSample2.htm、JDspemu2.htm |
接続アイコン取得サンプル | JSample3.htm、JMenu3.htm、JDspemu.htm |
処理サンプル | JSample4.htm、JMenu4.htm、JDspemu.htm |
メソッド呼び出しサンプル | JSample5.htm、JMenu5.htm、JDspemu.htm |
注意
基本サンプル、処理サンプルのHTMLはユーザ名、パスワード、接続アイコン名をユーザ環境に合わせて書き換える必要があります。
各サンプルのHTMLはエラーメッセージをユーザ環境・動作に合わせて書き換えて利用してください。
■HTMLへ記述の必要なイベント
エミュレータの正しい動作を保証するために、HTMLファイルへ記述することを求めるイベントがいくつかあります。次にそのイベントを取得するイベントハンドラと、呼び出しを求めるメソッドを挙げます。
動作の抑止処理を求めるイベントを取得するイベントハンドラ
onCut
onPaste
onCopy
onSelect
次のイベントハンドラでは、そのイベントに応じた処理を行うメソッドをF5AAUIMAINオブジェクトより呼び出すようにします。
このイベントハンドラは必ず定義する必要があります。
onBeforeUnload:F5AAUIMAIN.OnHtmlBeforeUnload ();
onUnload:F5AAUIMAIN.OnHtmlUnLoad ();
onFocus:F5AAUIMAIN.OnHtmlSetFocus ();
onResize:F5AAUIMAIN.OnHtmlReSize (width, height);
onLoad:F5AAUIMAIN.OnHtmlReSize (width, height);
●イベントハンドラからの関数呼び出し例
<BODY onbeforeunload="onBeforeUnloadMsg()"> function onBeforeUnloadMsg() { F5AAUIMAIN.OnHtmlbeforeunload(); }
<BODY onbeforeunload="onBeforeUnloadMsg()"> Sub onBeforeUnloadMsg() F5AAUIMAIN.OnHtmlBeforeUnload End Sub
ロード、リサイズ時にはリサイズ処理メソッド OnHtmlResize()を呼び出す必要があります。
OnHtmlResize
ドキュメントの高さと幅を引数として渡す必要があります。次にその例を挙げます。
●イベントハンドラからの関数呼び出し例
<BODY onload="onResize()"> function onResize() { var width = document.body.clientWidth; var height = document.body.clientHeight; F5AAUIMAIN.OnHtmlReSize(width, height); }
<BODY onload="onResize()"> Sub onResize() Width = document.body.clientWidth height = document.body.clientHeight F5AAUIMAIN.OnHtmlReSize width, height End Sub
■HTMLのフレームを使用する場合の記述(参考)
HTMLのフレームを使用しF5AAINETCTLオブジェクトとF5AAUIMAINオブジェクトがそれぞれ別のフレームに存在する場合は、F5AAUIMAINオブジェクトがロードされていない状態が存在します。この状態でF5AAUIMAINオブジェクトを操作すると例外が発生しますので、この場合、F5AAUIMAINオブジェクトのロードが完了したかを判定し、ロードが完了している場合にF5AAUIMAINオブジェクトを操作するようにしてください。
●F5AAUIMAINオブジェクトのロード完了判定の例
※F5AAUIMAINオブジェクトはdspemuフレームに存在する。
//F5AAUIMAINオブジェクトのロード完了判定処理 function LoadCheck() { try { obj = parent.dspemu.F5AAUIMAIN.Macro; } catch(e) { return false; } return true; } function doxxx() { if(LoadCheck()) { //ここに処理を記述します } }
'F5AAUIMAINオブジェクトのロード完了判定処理 Function LoadCheck() On Error Resume Next Dim obj Set obj = parent.dspemu.F5AAUIMAIN.Macro If Err.Number <> 0 Then LoadCheck=false Else LoadCheck=true End If End Function Sub doxxx() If LoadCheck() Then 'ここに処理を記述します End If End Sub
また、フレームの表示が完了してもF5AAUIMAINオブジェクトのロードが完了していない場合があります。この状態でF5AAUIMAINオブジェクトを操作すると例外が発生しますので、このような状態が発生するような場合(たとえばフレームを表示しすぐにF5AAUIMAINオブジェクトを操作する場合など)は、F5AAUIMAINオブジェクトのロードの完了を待ち合わせて処理を行うようにしてください。
●F5AAUIMAINオブジェクトのロード完了待ち合わせ処理の例
※F5AAUIMAINオブジェクトはdspemuフレームに存在する。
timerID=0;//タイマID function LoadCheck() { try { obj = parent.dspemu.F5AAUIMAIN.Macro; } catch(e) { return false; } return true; } function doxxx() { if(LoadCheck()) { //タイマを解除します(必須) clearInterval(timerID); //ここに処理を記述します } } //1秒間隔でdoxxxを実行します。 timerID = setInterval("doxxx()",1000);
timerID=0 'タイマID Function LoadCheck() On Error Resume Next Dim obj Set obj = parent.dspemu.F5AAUIMAIN.Macro If Err.Number <> 0 Then LoadCheck=false Else LoadCheck=true End If End Function Sub doxxx() If LoadCheck() Then 'タイマを解除します(必須) window.clearInterval(timerID) 'ここに処理を記述します End If End Sub '1秒間隔でdoxxxを実行します。 timerID = window.setInterval("doxxx()",1000)