Class DeferredScript

All Implemented Interfaces:
PartialStateHolder, StateHolder, TransientStateHolder, ComponentSystemEventListener, FacesListener, SystemEventListenerHolder, EventListener

public class DeferredScript extends ScriptFamily

The <o:deferredScript> is a component based on the standard <h:outputScript> which defers the loading of the given script resource to the window load event. In other words, the given script resource is only loaded when the window is really finished with loading. So, the enduser can start working with the webpage without waiting for the additional scripts to be loaded. Usually, it are those kind of scripts which are just for progressive enhancement and thus not essential for the functioning of the webpage.

This will give bonus points with among others the Google PageSpeed tool, on the contrary to placing the script at bottom of body, or using defer="true" or even async="true".

Since 2.4 this will render the crossorigin attribute with a value of anonymous. Since 3.13 this will also render the integrity attribute with a base64 encoded sha384 hash as SRI, see also MDN.

Usage

Just use it the same way as a <h:outputScript>, with a library and name.

 <o:deferredScript library="yourlibrary" name="scripts/filename.js" />
 

You can use the optional onbegin, onsuccess and onerror attributes to declare JavaScript code which needs to be executed respectively right before the script is loaded, right after the script is successfully loaded, and/or when the script loading failed.

Since:
1.8
Author:
Bauke Scholtz
See Also:
  • Field Details

    • COMPONENT_TYPE

      public static final String COMPONENT_TYPE
      The component type, which is "org.omnifaces.component.script.DeferredScript".
      See Also:
  • Constructor Details

  • Method Details

    • processEvent

      public void processEvent(ComponentSystemEvent event)
      Move this component to body using ScriptFamily.moveToBody(ComponentSystemEvent). If successfully moved, then set the script resource as rendered, so that Faces won't auto-include it.
      Specified by:
      processEvent in interface ComponentSystemEventListener
      Overrides:
      processEvent in class UIComponent
    • getLibrary

      public String getLibrary()
      Returns the "library name" part of the resource identifier.
      Returns:
      The library name.
    • setLibrary

      public void setLibrary(String library)
      Sets the "library name" part of the resource identifier.
      Parameters:
      library - The library name.
    • getName

      public String getName()
      Returns the "resource name" part of the resource identifier.
      Returns:
      The resource name.
    • setName

      public void setName(String name)
      Sets the "resource name" part of the resource identifier.
      Parameters:
      name - The resource name.
    • getGroup

      public String getGroup()
      Returns the group name on which the deferred script resources should be combined by CombinedResourceHandler. All deferred scripts resources having the same combined group name will be combined into a single deferred script in the place where the first member of the group occurs in the component tree.
      Returns:
      The group name.
    • setGroup

      public void setGroup(String group)
      Sets the group name on which the deferred script resources should be combined by CombinedResourceHandler. All deferred scripts resources having the same combined group name will be combined into a single deferred script in the place where the first member of the group occurs in the component tree.
      Parameters:
      group - The group name.
    • getOnbegin

      public String getOnbegin()
      Returns the JavaScript code to execute right before the script loading begins.
      Returns:
      The onbegin script.
    • setOnbegin

      public void setOnbegin(String onbegin)
      Sets the JavaScript code to execute right before the script loading begins.
      Parameters:
      onbegin - The onbegin script.
    • getOnsuccess

      public String getOnsuccess()
      Returns the JavaScript code to execute when the script loading is successfully completed.
      Returns:
      The onsuccess script.
    • setOnsuccess

      public void setOnsuccess(String onsuccess)
      Sets the JavaScript code to execute when the script loading is successfully completed.
      Parameters:
      onsuccess - The onsuccess script.
    • getOnerror

      public String getOnerror()
      Returns the JavaScript code to execute when the script loading has failed.
      Returns:
      The onerror script.
    • setOnerror

      public void setOnerror(String onerror)
      Sets the JavaScript code to execute when the script loading has failed.
      Parameters:
      onerror - The onerror script.