Supported client script types and APIs
Summarize
Summary of Supported client script types and APIs
This documentation explains the support and usage of various client script types and client-side APIs within ServiceNow's Service Portal, specifically aligned with the Zurich release. It highlights which script types and APIs are compatible, how to configure them properly, and important limitations to consider when developing or migrating client scripts for Service Portal environments.
Show less
Client Script Support in Service Portal
- Catalog and Validation Client Scripts: Must have the UI Type set to All or Mobile / Service Portal. Scripts marked as Desktop are not supported due to reliance on legacy APIs.
- Validation Scripts: To function in Service Portal, you must activate the Mobile and Service Portal version of validation scripts after upgrade. Validation scripts validate user input on specific field types.
- UI Scripts: Require UI Type set to All or Mobile / Service Portal and Global field set to false. They can be called within validation scripts using the
guiscriptsglobal object. - UI Actions: All server-side UI actions are supported; however,
setRedirectURL()calls are ignored because Service Portal handles redirection differently. Client-marked UI Actions are ignored on forms. - UI Policies: Supported but should be declarative only. Scripting within UI Policies is discouraged unless necessary and cannot be achieved through conditions.
- UI Macros and Formatters: Not supported in Service Portal as they rely on Jelly, which is incompatible.
Supported Client-Side APIs
Only client-side APIs compatible with mobile environments can be used in Service Portal client scripts such as onLoad, onChange, and onSubmit. Key supported APIs include:
- gform: Offers methods to manipulate form fields, messages, options, sections, and submission. Note that
gformcannot be used withvariables.varnamenotation or as a global object in widget client controllers or UI scripts. - glist: Provides list manipulation methods like adding/removing items and setting queries.
- gservicecatalog: Supports order guide detection.
- GlideAjax: Supports asynchronous server calls with methods like
getXML(callback)andgetXMLAnswer(callback). Synchronous calls such asgetXMLWait()are unsupported. GlideAjax is not usable in widget client controllers. - GlideRecord: Allows querying and manipulating records asynchronously with callbacks.
- i18NV3: Supports internationalization message retrieval asynchronously.
Practical Implications for ServiceNow Customers
- When migrating or developing client scripts for Service Portal, ensure UI Type is correctly set to All or Mobile / Service Portal to avoid unsupported legacy API usage.
- Use only supported client-side APIs compatible with mobile environments to ensure functionality within Service Portal widgets and forms.
- Activate Mobile and Service Portal versions of validation scripts in upgraded instances to maintain input validation.
- Avoid relying on UI Macros, Formatters, and synchronous GlideAjax calls as they are incompatible with Service Portal.
- Leverage asynchronous GlideAjax calls and declarative UI Policies to provide responsive, maintainable functionality.
Some client scripts are not supported in Service Portal. Others must have a UI type set to All or Mobile / Service Portal. If using a client script in the Service Portal, only client-side APIs supported in a mobile environment can be used.
Client script support in Service Portal
| Client script | Description |
|---|---|
| Catalog client scripts | Service Portal requires that the UI Type field be set to All or Mobile / Service Portal. Client Scripts marked as Desktop rely on legacy APIs that are not supported in Service Portal. Before flagging a script as Mobile / Service Portal or All, make sure you are only using supported client-side APIs. |
| Validation scripts | Service Portal requires that the UI Type field be set to All or Mobile / Service Portal. Client Scripts marked as Desktop rely on legacy APIs that are not supported in Service Portal. Before flagging a script as Mobile / Service Portal or All, make sure you are only using supported client-side APIs. Validate user input in a specific field type using a validation script. In new instances, Service Portal includes XML, Script, Script (Plain), Email, and Version validation scripts by default. If upgrading from a previous release, the Mobile and Service Portal version is not active by default. You must activate the Mobile and Service Portal version of the validation script to validate user input in the Service Portal. See Activate Service Portal validation scripts. Note: To call a UI script within a Validation script, use the g_ui_scripts
global object. For more information, see GlideUIScripts.
Verify that the UI script has the Global field set to
false and UI Type set to Mobile / Service Portal or All. |
| UI scripts | Service Portal requires that the UI Type field be set to All or Mobile / Service Portal. Client Scripts marked as Desktop rely on legacy APIs that are not supported in Service Portal. Before flagging a script as Mobile / Service Portal or All, make sure you are only using supported client-side APIs. |
| UI Actions | All server-side UI actions are supported in Service Portal, although setRedirectURL() operations are ignored because Service Portal forms handle redirection in a different way than the platform. The form widget ignores any UI Actions marked as Client. |
| UI Policies | Supported, although you should use only declarative UI Policies. Avoid scripting unless the outcome cannot be achieved through the condition builder. |
| UI Macros | Not supported as UI macros use Jelly. |
| Formatters | Not supported as formatters use Jelly. |
Supported client-side APIs
Supported client scripting APIs for use in onLoad, onChange, and onSubmit client scripts.
For detailed class and method information, see the Client API reference.
| Class | Available methods |
|---|---|
| g_form |
Note: Using the variables.var_name notation with the g_form API
is not supported in Service Portal. g_form as a
global object cannot be used in a widget client controller or in a UI script. |
| g_list |
|
| g_service_catalog | isOrderGuide() |
| GlideAjax |
Note:
|
| GlideRecord |
|
| i18NV3 | getMessage(String messageKey, Function callback) |