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 呼び出しの生成が許可されている場合にこの処理が行われます。
この機能を有効にするには、コンテキスト管理の詳細設定 ダイアログ ボックスの あいまいなフォーム検出 オプションをオンにします ()。