モバイル クライアント GlideForm (g フォーム) のスクリプトと移行

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:7分
  • モバイル用のクライアントスクリプトは、Web 用のスクリプトと同じですが、いくつかの例外があります。すべての新しいスクリプトは特定のガイドラインに準拠する必要があります。モバイルプラットフォームで影響を受けるアイテムは、クライアントスクリプト、UI ポリシー、ナビゲーターモジュール、および UI アクションです。

    クライアントスクリプト

    新しいスクリプトまたは既存のスクリプトをモバイルで有効にするには、次の要件に準拠する必要があります。
    • g_form.getControl() の代わりに、新しいモバイルメソッドを使用する。
    • 使用禁止メソッドは使用しない。
    • サポート対象外のブラウザーオブジェクトは参照しない。
    • 同期 JavaScript、GlideAjaxGlideRecord 呼び出しを使用しない。
    • モバイルでは利用できないメソッドは呼び出さない。
    • スクリプトをモバイル UI で実行できるようにする。
    表 : 1. 要件
    新しいモバイルメソッドを使用する HTML を直接操作するのではなく、フォームフィールドを変更するための新しいメソッドがいくつか用意されています。これらのメソッドにより、以前使用していた g_form.getControl() は置き換えられ、モバイルプラットフォームで使用禁止になります。既存のスクリプトでは、モバイルプラットフォームで無効になったメソッドの代わりに、新しいメソッドが使用されるようにします。これらの新しいメソッドの詳細については、「Mobile GlideForm() API」を参照してください。
    使用禁止メソッドを使用しない

    HTML 要素への直接アクセスが許可されていないため、モバイルプラットフォームで次のメソッドが使用禁止になりました。

    • g_form.getControl()
    • g_form.getFormElement()
    • g_form.getElement()

    既存のスクリプトに互換性があることを確認するには、使用禁止メソッドへのすべての呼び出しをコードから削除します。新しいスクリプトの場合、スクリプトをモバイルで有効にするには、使用禁止メソッドを使用しないでください。

    g_form.getControl() の場合、以前にこのメソッドに含まれていた機能のいくつかが個々のメソッドに抽出されています。g_form.getControl() の代わりに、開発者サイトに記載されている新しいメソッドを使用します。

    サポート対象外のブラウザーオブジェクトは参照しない

    モバイルスクリプトでは、次のブラウザーオブジェクトはサポートされていません。

    • ウィンドウ
    • jQuery または Prototype ($、$j、または $$)
    • ドキュメント

    新しいスクリプトがこれらのオブジェクトを使用していないことを確認し、既存のスクリプトからこれらのオブジェクトを削除します。代わりに、GlideForm (g_form) を使用します。同じタスクを実行するために、setLabel()addDecoration()、および hasField() などのメソッドが提供されています。

    同期 JavaScript 呼び出しを使用しない

    モバイルプラットフォームでは、同期 JavaScript 呼び出しは許可されていません。g_form.getReference() メソッドでは、コールバックパラメーターを定義しておく必要があります。例:

     g_form.getReference(fieldName, callback)

    すべての g_form.getReference() 呼び出しにコールバックパラメーターが含まれるようにします。たとえば、次のスクリプトにはコールバックが含まれないため、モバイルプラットフォームとは互換性がありません。

     var userName = g_form.getReference('assigned_to').user_name;
     g_form.setValue('u_assigned_user_name', userName);

    次のスクリプトは、コールバックが含まれるように更新されたため、モバイルプラットフォームと互換性があります。

     g_form.getReference('assigned_to', function(now_GR) {
         g_form.setValue('u_assigned_user_name', gr.user_name);
     });
    同期 Ajax 呼び出しを使用しない モバイルプラットフォームは、同期 GlideAjax 呼び出しを許可していません。GlideAjaxgetXMLWait() をどのように使用しても、モバイルプラットフォームでは機能しません。すべての GlideAjax 呼び出しが常に非同期になるようにします。GlideAjax 呼び出しと getXMLWait() の同期と非同期の詳細については、「AJAX」を参照してください。利用可能な GlideAjax メソッドの詳細については、「GlideAjax API」を参照してください。
    同期 GlideRecord 呼び出しを使用しない

    モバイルプラットフォームでは同期 GlideRecord 呼び出しは使用できません。既存の GlideRecord 呼び出しにコールバックが含まれるようにします。たとえば、次のスクリプトにはコールバックが含まれないため、モバイルプラットフォームとは互換性がありません。

     var now_GR = new GlideRecord('incident');
     gr.addQuery('number', g_form.getValue('related_incident'));
     gr.query();
     gr.next();
     g_form.setValue('u_related_incident_description', gr.short_description);

    次のスクリプトは、コールバックが含まれるように更新されたため、モバイルプラットフォームと互換性があります。

     var now_GR = new GlideRecord('incident');
     gr.addQuery('number', g_form.getValue('related_incident'));
     gr.query(function(now_GR) {
         gr.next();
         g_form.setValue('u_related_incident_description', gr.short_description);
     });
    モバイルプラットフォームで利用できないメソッドは使用しないでください
    モバイルプラットフォームによって課せられる制限と機能の低下により、次のメソッドは使用禁止されることはありませんが、モバイルプラットフォームでは利用できません。モバイルプラットフォームで実行されても、何も起こりません。
    • showRelatedList ()
    • hideRelatedList ()
    • showRelatedLists ()
    • hideRelatedLists()
    • flash()
    • getSections()
    • enableAttachments()
    • disableAttachments()
    • setReadonly() (setReadOnly() は利用可能です)
    • getParameter()
    モバイル用スクリプトを有効にする

    モバイルプラットフォームでスクリプトを有効にする必要があります。

    注:
    モバイルフォームでの要素のフォーカスはサポートされていません。

    UI ポリシー

    モバイルプラットフォーム、デスクトップ、またはその両方でスクリプトを実行するかどうかを決定するには、[UI タイプでスクリプトを実行] フィールドを使用します。既存のポリシーがモバイルプラットフォームまたはその両方に適用されるように既存のポリシーを更新します。新しいスクリプトの場合は、モバイルオプションまたはその両方が選択されていることも確認します。

    ナビゲーターモジュール

    既存のコードの場合、モジュールをモバイルプラットフォームで使用するには、sys_ui_application または sys_ui_module のいずれかのテーブルに転送する必要があります。新しいコードを開発する場合は、すべてのモジュールが sys_ui_application または sys_ui_module テーブルで作成されるようにしてください。

    UI アクション

    UI アクションをモバイルプラットフォームで表示するには、sys_ui_ng_action テーブルに転送する必要があります。使用禁止メソッドを使用しない UI アクションスクリプトでは、スクリプト自体を変更する必要はありません。新しい UI アクションの場合は、sys_ui_ng_action テーブルで作成されるようにしてください。