UI アクションでクライアント側とサーバー側のコードをエラーなく使用する方法Issue この記事の目的は、クライアント側の UI アクションでクライアント側とサーバー側のスクリプトがどのように動作するかを説明することです。この 2 つの間のインタラクションは必ずしも直感的なものとは言えず、正しく処理されなければフォーム上のエラーにつながります。一般的に問題となるのは、クライアント側とサーバー側の API を使用し、クライアント側とサーバー側のオブジェクトを同じスクリプトの中で参照する可能性があることです。 これが正しくない場合、UI アクションはエラーを引き起こします。UI アクションをクリックした後に空白のページが読み込まれたり、フォームの右クリックのコンテキストメニューが表示されなかったり、その他の予期しない結果が生じる場合があります。 関数を使用する これを正しく行うための鍵は、関数を使用してクライアント側とサーバー側のコードを別々のクロージャにラップすることです。そうすれば、スクリプトの実行時に API が存在しない場合でも、その関数が呼び出されない限り、大きな問題には発展しないはずです。クライアント側の UI アクションをクリックすると、onClick フィールドで指定された関数が呼び出されます。 クライアント側のコードはここに配置します。onClick 関数では、g_form、g_user、およびその他のクライアント側のオブジェクトや API にアクセスできます。ここでは、current メソッドや、gs メソッドのようなサーバー側のオブジェクトや API にはアクセスできません。サーバー側のオブジェクトや API にアクセスするには、別の関数が必要で、ウィンドウオブジェクトが定義されていないときは常にその関数が呼び出される必要があります。 そうすると、サーバー側の関数では、current や gs メソッドのようなサーバー側のオブジェクトや API にはアクセスできますが、g_form のようなクライアント側の API にはアクセスできなくなります。 UI アクションがクライアント側とサーバー側の両方のコードを実行する場合、クライアント側の関数がサーバー側の関数をトリガーして gftSubmit() を呼び出し、UI アクションを再度トリガーし、今度はサーバー側のコードのみを実行する必要があることに注意してください。詳細については、「UI アクションの作成」のドキュメントを参照してください。 処理 UI アクションをクリックすると、処理は次のようになります。 onClick 関数が呼び出されます。この例では doSubmit です。 ウィンドウオブジェクトは定義されているため、他には何も起こりません。 一度サーバーに送られると、UI アクションコードは 2 回目も実行されますが、今度は doSubmit が呼ばれることはありません。 ここではウィンドウ が定義されていないため、 doServerStuff が呼び出されます doServerStuff は実行され、意図したとおりに動作します。 関数を使用することで、コードの特定の部分をいつ実行するかを制御し、API やオブジェクトが未定義であることによって発生するエラーを回避できます。 追加情報 「UI アクションが表示されない、または動作しない場合のトラブルシューティング方法」を参照してください