Events
Four CustomEvents on window – that's the
whole API.
Events are Sparke's entire API. Four CustomEvents
fire on window; listen for the ones you need.
The four events
| Event | Detail | Cancelable | When |
|---|---|---|---|
sparke:navigate |
{ from, to } |
no | A navigation is requested, before any network. |
sparke:before-swap |
{ from, to } |
yes |
About to swap. preventDefault() keeps the
user put.
|
sparke:after-swap |
{ from, to } |
no | New content is in place. |
sparke:loading |
{ active } |
no | Loading state changed (debounced). |
Re-initialise after a swap
after-swapjs
window.addEventListener("sparke:after-swap", (e) => {
initWidgets();
trackPageview(new URL(e.detail.to).pathname);
});
Cancel a navigation
before-swap (cancelable)js
window.addEventListener("sparke:before-swap", (e) => {
if (formIsDirty() && !confirm("Leave with unsaved changes?"))
e.preventDefault();
});
React to loading state
loadingjs
window.addEventListener("sparke:loading", (e) => {
document.body.classList.toggle("is-loading", e.detail.active);
});
e.detail.from and e.detail.to are
full URLs – use new URL(...).pathname when you
only want the path.