Comments (1)
Okay, so I found out that other SPA routers are simply overriding the browser's window.onpopstate
callback function to manipulate the DOM manually. And you can obviously do that, too, and then simply call htmx's ajax()
function to mimic the behavior of hx-boost
, like so:
window.onpopstate = () => htmx.ajax("GET", window.location.pathname);
I created another CodeSandbox example with this solution for demonstration purposes.
Another approach I found is to use the experimental Navigation API. Using this, it is possible to drop hx-boost
entirely and just listen to the navigate
event of this API, like so:
window.navigation.addEventListener("navigate", (event) => {
if (!event.canIntercept || event.hashChange || event.downloadRequest !== null) {
return;
}
event.intercept({
async handler() {
const url = new URL(event.destination.url);
await htmx.ajax("GET", url.pathname);
},
});
});
However, as of right now the Navigation API is not supported by Firefox and Safari. So it's only really an option in the future.
Now, the solution to this problem isn't complicated, but it actually wasn't that easy to find (at least for me), so it may be nice to have this functionality built into htmx in some form or another or at least have the docs mention it somewhere.
from htmx.
Related Issues (20)
- A way to reset/block hx-select and HX-Reselect. IMPROVEMENT
- (website) Images are not displayed in Atom feed
- Question about async encodeParameters in extension
- When using HX-Redirect, the htmx:afterRequest event's detail.successful and detail.failed fields are undefined
- Form doesn't reactivate again when receiving itself in Chrome HOT 3
- Behaviour when disconnected/unmounted from body
- HX-Location should respect Hx-Push-Url when false HOT 2
- htmx.ajax('DELETE') HOT 1
- Unable to understand why this works with html&js but not with htmx HOT 2
- Adding attributes with loading-states extension
- hx-select conflict HOT 2
- [Question] Option to override xhr request with call to my SDK HOT 7
- [Question] 204 with hx-swap="delete" HOT 1
- hx-on is not working for custom events HOT 6
- hx-trigger from:<Extended CSS selector> breaks after target replaced
- Comma separated, multiple path-deps?
- Events htmx:afterRequest / htmx:afterOnLoad not fired in some cases
- Feature Request: http header HX-Redirect with value back HOT 1
- Improve documentation for websocket extension
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from htmx.