XPagesではなく、クラシックな方法でNotesアプリをWeb化する際のつづきのおはなしです。
(以前のお話し)
上記の各作文では
$$QueryOpenAgent・$$QuerySaveAgent という、2つの忘れ去られた予約フィールドについて書きました。
それぞれ WebQueryopenイベント、WebQuerySaveイベントに相応します。
お伝えしたかったことは、サブフォームでも使えるってことです。
サブフォームにはイベントがないけど、予約フィールドなら置くことができます。
Web系には正直云って詳しくないのですが、
本作文では、ほかに私が知ってる範囲で、
サブフォームに置くことができるWeb系代替機能について触れます。
HTML Head Contentに相応するもの
$$HTMLHead という予約フィールドが、
のちにフォーム上に実装された、HTML Head Contentに相応します。
こちらは HTMLのヘッダー情報を式で書き込むのに使います。

繰り返しですが、これもサブフォームにはないけど、
予約フィールドの方ならサブフォームでも使えます。
onLoad イベントに相応するもの
そもそもデザイナーで見ると、サブフォームには onLoadイベント、あります。
代わりなんていらないじゃん、と云われそうですが・・・実は、サブフォームのonLoadは、
動作しないのです。
今のところIBMさんの記事を見つけられていませんが、経験上動かず。海外サイトでこれを指摘しているページを見かけます。
動作しないのです。
今のところIBMさんの記事を見つけられていませんが、経験上動かず。海外サイトでこれを指摘しているページを見かけます。
では、onLoadを行うための$$予約フィールドで代替する?
残念ながらこれそのものの予約フィールドはないのです。
しかし。
サブフォーム上に直接htmlのbodyタグを書き、そこに「onLoad=」に続けてロード時に実行したいことを記述できます。それらを丸々パススルーHTMLに指定することで動作させることができるわけです。

onLoad イベントから説明を始めちゃいましたが
「bodyタグを書いてパススルーHTMLに」、という方法自体で、
フォーム上のHTML Body Attributes の代わりもできると思われます。
ということは、
私自身は未確認ですが、ほかのJavascriptベースのイベントを入れ込むことも、この方法で可能だと思います。
また、$$HTMLFieldという予約フィールドに書き込む手もあるようです。
これについては確認したら別途。
以上、Webページに必要な要素を、サブフォームに持たせることで
一つ一つのフォームで同じ内容のイベントを、フォーム数分書かなくてもよくなる、共通化できるわけで、クラシックなWeb化での開発負荷を多少軽減できる場合があると思います。