API
The JS API reference.
The following API reference is for SPF 24 (v2.4.0).
spf
The top-level SPF namespace.
spf.init
Function
spf.init(opt_config)
Initializes SPF.
Parameters
opt_config: Object
Optional global configuration object.
Returns
boolean
Whether SPF was successfully initialized. If the HTML5
history modification API is not supported, returns false.
spf.dispose
Function
spf.dispose()
Disposes SPF.
spf.navigate
Function
spf.navigate(url, opt_options)
Navigates to a URL.
A pushState history entry is added for the URL, and if successful, the navigation is performed. If not, the browser is redirected to the URL. During the navigation, first the content is requested. If the reponse is sucessfully parsed, it is processed. If not, the browser is redirected to the URL. Only a single navigation request can be in flight at once. If a second URL is navigated to while a first is still pending, the first will be cancelled.
Parameters
url: string
The URL to navigate to, without the SPF identifier.
opt_options: Object | spf.RequestOptions
Optional request options.
spf.load
Function
spf.load(url, opt_options)
Loads a URL.
Similar to spf.navigate, but intended for traditional content updates, not page navigation. Not subject to restrictions on the number of simultaneous requests.
Parameters
url: string
The URL to load, without the SPF identifier.
opt_options: Object | spf.RequestOptions
Optional request options.
Returns
XMLHttpRequest
The XHR of the current request.
spf.process
Function
spf.process(response, opt_callback)
Process a SPF response on the current page outside of a navigation flow.
Parameters
response: spf.SingleResponse | spf.MultipartResponse
The SPF response
object to process.
opt_callback: function
Function to execute when processing is done; the argument is
the response
.
spf.prefetch
Function
spf.prefetch(url, opt_options)
Prefetches a URL.
Use to prime the SPF request cache with the content and the browser cache with script and stylesheet URLs. If the response is successfully parsed, it is preprocessed to prefetch scripts and stylesheets as well.
Parameters
url: string
The URL to prefetch, without the SPF identifier.
opt_options: Object | spf.RequestOptions
Optional request options.
Returns
XMLHttpRequest
The XHR of the current request.
spf.SingleResponse
Class
Definition for a single SPF response object.
Attributes
attr: Object.<string, Object.<string, string>> | undefined
Map of Element IDs to maps of attibute names to values for the Elements.
body: Object.<string, string> | undefined
Map of Element IDs to HTML strings containing content of the Elements. The
content may contain script and/or style tags to be executed or installed.
cacheKey: string | undefined
String of the cache key used to store this response.
cacheType: string | undefined
String of the type of caching to use for this response.
data: * | undefined
Reserved for client data of any type.
head: string | undefined
HTML string containing CSS and/or JS tags to execute or install.
foot: string | undefined
HTML string containing JS and/or CSS tags to execute or install.
redirect: string | undefined
String of a URL to request instead.
reload: boolean | undefined
Boolean to indicate the page should be reloaded.
timing: Object.<(number|string|boolean)> | undefined
Map of timing attributes to timestamp numbers.
title: string | undefined
String of the new Document title.
url: string | undefined
String of the correct URL for the current request. This will replace the
current URL in history.
spf.MultipartResponse
Class
Definition for a multipart SPF response object.
Attributes
cacheKey: string | undefined
String of the key used to cache this response.
cacheType: string | undefined
String of the type of caching to use for this response.
parts: Array.<spf.SingleResponse> | undefined
List of response objects.
timing: Object.<string, number> | undefined
Map of timing attributes to timestamp numbers.
type: string
The string "multipart".
spf.RequestOptions
Class
Definition for options when requesting a URL.
Attributes
headers: Object.<string> | undefined
Optional map of headers to send with the request.
method: string | undefined
Optional method with which to send the request; defaults to "GET".
onError: function | undefined
Optional callback to execute if the request fails. The argument to the
callback will be an object that conforms to the spf.EventDetail
interface for "spferror" events (see spf.Event).
onRequest: function | undefined
Optional callback to execute before sending a SPF request. The argument
to the callback will be an object that conforms to the
spf.EventDetail interface for "spfrequest" events (see
spf.Event).
onPartProcess: function | undefined
Optional callback to execute upon receiving a part of a multipart SPF
response (see spf.MultipartResponse). Called before the part is
processed, once per part of multipart responses; never called for
single responses. If valid "X-SPF-Response-Type: multipart" and
"Transfer-Encoding: chunked" headers are sent, then this callback will be
executed on-the-fly as chunks are received. The argument to the
callback will be an object that conforms to the spf.EventDetail
interface for "spfpartprocess" events (see spf.Event).
onPartDone: function | undefined
Optional callback to execute after processing a part of a multipart SPF
response (see spf.MultipartResponse). Called once per part of
multipart responses; never called for single responses. If valid
"X-SPF-Response-Type: multipart" and "Transfer-Encoding: chunked"
headers are sent, then this callback will be executed on-the-fly as
chunks are received. The argument to the callback will be an object
that conforms to the spf.EventDetail interface for
"spfpartdone" events (see spf.Event).
onProcess: function | undefined
Optional callback to execute upon receiving a single SPF response (see
spf.SingleResponse). Called before the response is processed;
never called for multipart responses. The argument to the callback will
be an object that conforms to the spf.EventDetail interface for
"spfprocess" events (see spf.Event).
onDone: function | undefined
Optional callback to execute when the response is done being processed.
Called once as the last event for both single and multipart responses (see
spf.SingleResponse and spf.MultipartResponse). The argument
to the callback will be an object that conforms to the
spf.EventDetail interface for "spfdone" events (see
spf.Event).
postData: ArrayBuffer | Blob | Document | FormData | null | string | undefined
Optional data to send with the request. Only used if the method is "POST".
spf.Event
Class
Definition of CustomEvents dispatched by SPF.
Attributes
detail: spf.EventDetail
Optional detail object of the custom event.
spf.EventDetail
Class
Definition of the CustomEvent "detail" attribute (see spf.Event),
also used as an argument to callbacks in spf.RequestOptions objects.
Attributes
err: Error | undefined
The Error that occurred; defined for "spferror" events,
name: string | undefined
The name of the scripts or stylesheets that will be unloaded; defined for
"spfjsbeforeunload", "spfjsunload", "spfcssbeforeunload", and
"spfcssunload" events.
part: spf.SingleResponse | undefined
One part of a multipart SPF response (see spf.MultipartResponse);
defined for "spfpartprocess" and "spfpartdone" events.
previous: string | undefined
The URL of the previous page; defined for "spfhistory" and
"spfrequest" events.
reason:
A string containing a reason code and a text explanation (debug only);
defined for the "spfreload" event.
referer: string | undefined
The URL of the previous page; defined for "spfhistory" and
"spfrequest" events.
response: spf.SingleResponse | spf.MultipartResponse | undefined
A complete SPF response; defined for "spfprocess" events as a single
response and for "spfdone" events as either a single or multipart
response (see spf.SingleResponse and spf.MultipartResponse.
xhr: XMLHttpRequest | undefined
A complete XMLHttpRequest object; defined for "onError" events.
target: Element | undefined
The target element of a click; defined for "spfclick" events.
url: string | undefined
The URL of the request; defined for "spferror", "spfreload", "spfclick",
"spfhistory", "spfrequest", "spfpartprocess", "spfpartdone", "spfprocess",
and "spfdone" events - or - the URL of the script or stylesheet that will
be unloaded; defined for "spfjsbeforeunload", "spfjsunload",
"spfcssbeforeunload", and "spfcssunload" events.
spf.TaskScheduler
Class
Definition of the Scheduler API which can be used by the application to
control execution of tasks.
spf.TaskScheduler#addTask
Function
spf.TaskScheduler#addTask(task)
Adds a task to the scheduler, it is expected to be executed asynchronously as
determined by the scheduler.
Parameters
task: function
The task to execute.
Returns
number
The ID identifying the task.
spf.TaskScheduler#cancelTask
Function
spf.TaskScheduler#cancelTask(id)
Cancels a task if it has not been executed yet.
Parameters
id: number
The ID of the task to cancel.
spf.cache
Namespace for cache handling functions.
spf.cache.remove
Function
spf.cache.remove(key)
Removes an entry from cache.
Removed entries will be completely removed from cache, affecting both normal navigations as well as those triggered by a history change.
Parameters
key: string
The key to remove from cache.
spf.cache.clear
Function
spf.cache.clear()
Clear all entries from cache.
Removed entries will be completely removed from cache, affecting both normal navigations as well as those triggered by a history change.
spf.script
Namespace for script-loading functions.
spf.script.load
Function
spf.script.load(url, name, opt_fn)
Loads a script asynchronously and defines a name to use for dependency
management and unloading. See spf.script.ready to wait for named
scripts to be loaded and spf.script.unload to remove previously
loaded scripts.
Subsequent calls to load the same URL will not reload the script. To reload a script, unload it first with spf.script.unload. To unconditionally load a script, see spf.script.get.
A name must be specified to identify the same script at different URLs. (For example, "main-A.js" and "main-B.js" are both "main".) When a name is specified, all other scripts with the same name will be unloaded before the callback is executed. This allows switching between versions of the same script at different URLs.
A callback can be specified to execute once the script has loaded. The callback will be executed each time, even if the script is not reloaded.
Parameters
url: string
URL of the script to load.
name: string
Name to identify the script.
opt_fn: function
Optional callback function to execute when the
script is loaded.
spf.script.unload
Function
spf.script.unload(name)
Unloads a script identified by name. See spf.script.load.
NOTE: Unloading a script will prevent execution of ALL pending callbacks but is NOT guaranteed to stop the browser loading a pending URL.
Parameters
name: string
The name of the script(s).
spf.script.get
Function
spf.script.get(url, opt_fn)
Unconditionally loads a script by dynamically creating an element and
appending it to the document without regard for dependencies or whether it
has been loaded before. A script directly loaded by this method cannot
be unloaded by name. Compare to spf.script.load.
Parameters
url: string
The URL of the script to load.
opt_fn: function
Function to execute when loaded.
spf.script.ready
Function
spf.script.ready(names, opt_fn, opt_require)
Waits for one or more scripts identified by name to be loaded and executes
the callback function. See spf.script.load or
spf.script.done to define names.
Parameters
names: string | Array.<string>
One or more names.
opt_fn: function
Callback function to execute when the
scripts have loaded.
opt_require: function
Callback function to execute if names
are specified that have not yet been defined/loaded.
spf.script.ignore
Function
spf.script.ignore(names, fn)
"Ignores" a script load by canceling execution of a pending callback.
Stops waiting for one or more scripts identified by name to be loaded and cancels the pending callback execution. The callback must have been registered by spf.script.load or spf.script.ready. If the callback was registered by spf.script.ready and more than one name was provided, the same names must be used here.
Parameters
names: string | Array.<string>
One or more names.
fn: function
Callback function to cancel.
spf.script.done
Function
spf.script.done(name)
Notifies any waiting callbacks that name
has completed loading.
Use with spf.script.ready for arbitrary readiness not directly tied
to scripts.
Parameters
name: string
The ready name.
spf.script.require
Function
spf.script.require(names, opt_fn)
Recursively loads scripts identified by name, first loading
any dependendent scripts. Use spf.script.declare to define
dependencies.
Parameters
names: string | Array.<string>
One or more names.
opt_fn: function
Callback function to execute when the
scripts have loaded.
spf.script.unrequire
Function
spf.script.unrequire(names)
Recursively unloads scripts identified by name, first unloading
any dependendent scripts. Use spf.script.declare to define
dependencies.
Parameters
names: string | Array.<string>
One or more names.
spf.script.declare
Function
spf.script.declare(deps, opt_urls)
Sets the dependency map and optional URL map used when requiring scripts.
See spf.script.require.
Parameters
deps: Object.<(string|Array.<string>)>
The dependency map.
opt_urls: Object.<string>
The optional URL map.
spf.script.path
Function
spf.script.path(paths)
Sets the path prefix or replacement map to use when resolving relative URLs.
Note: The order in which replacements are made is not guaranteed.
Parameters
paths: string | Object.<string>
The paths.
spf.script.prefetch
Function
spf.script.prefetch(urls)
Prefetchs one or more scripts; the scripts will be requested but not loaded.
Use to prime the browser cache and avoid needing to request the script when
subsequently loaded. See spf.script.load.
Parameters
urls: string | Array.<string>
One or more URLs of scripts to prefetch.
spf.style
Namespace for stylesheet-loading functions.
spf.style.load
Function
spf.style.load(url, name, opt_fn)
Loads a stylesheet asynchronously and defines a name to use for dependency
management and unloading. See spf.script.unload to remove previously
loaded stylesheets.
Subsequent calls to load the same URL will not reload the stylesheet. To reload a stylesheet, unload it first with spf.script.unload. To unconditionally load a stylesheet, see spf.script.get.
A name must be specified to identify the same stylesheet at different URLs. (For example, "main-A.css" and "main-B.css" are both "main".) When a name is specified, all other stylesheets with the same name will be unloaded. This allows switching between versions of the same stylesheet at different URLs.
A callback can be specified to execute once the stylesheet has loaded. The callback will be executed each time, even if the stylesheet is not reloaded. NOTE: Unlike scripts, this callback is best effort and is supported in the following browser versions: IE 6, Chrome 19, Firefox 9, Safari 6.
Parameters
url: string
URL of the stylesheet to load.
name: string
Name to identify the stylesheet.
opt_fn: function
Optional callback function to execute when the
stylesheet is loaded.
spf.style.unload
Function
spf.style.unload(name)
Unloads a stylesheet identified by name. See spf.script.load.
Parameters
name: string
Name of the stylesheet.
spf.style.get
Function
spf.style.get(url)
Unconditionally loads a stylesheet by dynamically creating an element and
appending it to the document without regard for whether it has been loaded
before. A stylesheet directly loaded by this method cannot be unloaded by
name. Compare to spf.script.load.
Parameters
url: string
URL of the stylesheet to load.
spf.style.path
Function
spf.style.path(paths)
Sets the path prefix or replacement map to use when resolving relative URLs.
Note: The order in which replacements are made is not guaranteed.
Parameters
paths: string | Object.<string>
The paths.
spf.style.prefetch
Function
spf.style.prefetch(urls)
Prefetchs one or more stylesheets; the stylesheets will be requested but not
loaded. Use to prime the browser cache and avoid needing to request the
stylesheet when subsequently loaded. See spf.script.load.
Parameters
urls: string | Array.<string>
One or more stylesheet URLs to prefetch.