JavaScript では、HTML で定義されているフォームを、送信前に変更できます。 個々のフォーム フィールドを削除したり、名前を変更すると、問題が生じる可能性があります。
そのような状況では、フォーム フィールドの使用属性によりコンテキスト管理を改善できます。
フォームの使用属性がない場合、次の例ではコンテキストのない方法でのモデル化が必要です。 ただし、フォーム使用属性を使用すると、次に示すようにコンテキストのあるモデル化が可能となります。
<form name="tabform" action="/cgi-bin/tabgui.asp" method="POST" target=_self> <input type=hidden name="session" value="6543"> <input type=hidden name="tabevent" value=""> <input type=hidden name="tabeventparam" value=""> </form> <a href="JavaScript:selectTab('3')>Stock Watch List</a> function selectTab(tabIndex) { // change value of field #2 document.tabform.elements[1].value = "select"; // change name of field #3, originally "tabeventparam" document.tabform.elements[2].name = "TabIndex"; // change value of field #3, now "TabIndex" document.tabform.elements[2].value = tabIndex; document.tabform.submit(); }
この HTML コードが含まれるページは、次の関数呼び出しに対するレスポンスであると仮定します。
WebPageLink("My portfolio");
また、このページには基本 URL http://www4.company.com/cgi-bin/portfolio.asp があるとします。
ユーザーが Stock Watch List のリンクをクリックします。 フォーム使用属性がない場合は、対応する BDL スクリプトは次のようになります。
WebPageLink("My portfolio"); WebPageForm("http://www4.company.com/cgi-bin/tabgui.asp", FORM_001); ... dclform FORM_001: "session" := "6543", "tabevent" := "select", "TabIndex" := "3";
このスクリプトは、コンテキストのない WebPageForm 関数を使用しています。 絶対 URL がスクリプトに記載され、状態情報が組み込まれることもあります。 フォーム FORM_001 はコンテキストを持たないため、状態情報がスクリプトに追加されます。
フォーム使用属性を使用すると、tabeventparam の名前を持つフィールを送信せず、TabIndex の名前を持つ追加のフィールドを送信するように指定できます。 そのため、WebPageSubmit 関数を使用して、フォーム tabform をコンテキストのある方法で送信することができます。
次は対応する BDL コードです。
WebPageLink("My portfolio"); WebPageSubmit("tabform", FORM_001); ... dclform FORM_001: "session" := "" <USE_HTML_VAL>, // unchanged "tabevent" := "select", // changed "tabeventparam" := "" <SUPPRESS>, // suppressed "TabIndex" := "3"; // added
このバージョンでは、スクリプトから状態情報が排除されるため、自動でコンテキストが管理されます。
Silk Performer Recorder は、送信されたフォーム データに一致しない HTML フォームを使用して WebPageSubmit 呼び出しを自動的に生成し、スクリプト内のそれらのフォーム フィールドに最適な使用属性を生成します。 Recorder では、コンテキストのない関数呼び出しではなく、コンテキストのある WebPageSubmit 呼び出しの生成が許可されている場合にこの処理が行われます。
この機能を有効にするには、コンテキスト管理の詳細設定 ダイアログ ボックスの あいまいなフォーム検出 オプションをオンにします ( )。