The second generation PJAX for advanced web frameworks.
Feature | defunkt | falsandtru | Turbolinks |
---|---|---|---|
Concurrency integration | X | O | X |
Shadow DOM support | X | O | X |
Multiple area update | X | O | O |
Fallback area matching | X | O | X |
Content type validation | X | O | O |
HEAD contents markless auto sync | X | O | X |
CSS markless auto sync | X | O | X |
Script markless auto load | X | O | X |
External script load | O | O | O |
Inline script execution | X | O | O |
Execution sequence keeping | X | O | X |
Non-blocking script load | O | O | O |
Subresource integrity checking | X | O*1 | X |
Lightweight source rewrite | X | O | O |
ETag support | X | O | X |
Cache | O | O | O |
URL scope | X | O | X |
URL scope-based override settings | X | O | X |
Browser history fix | X | O | X |
Scroll position restoration | X | O | X |
NOSCRIPT tag restoration | X | O | X |
History API support*2 | ? | O | ? |
No jQuery dependency | X | O | ? |
*1 Excludes ES modules.
*2 You can use pjax APIs and history APIs in combination.
https://www.jsdelivr.com/package/npm/pjax-api
$ npm i pjax-api
Note that this example specifies the latest version. You have to replace it with any specific version to preserve APIs from breaking changes.
<script src="https://cdn.jsdelivr.net/npm/pjax-api@latest"></script>
<script src="/assets/js/config.js"></script>
// config.js
import Pjax from 'pjax-api';
// or
const { Pjax } = require('pjax-api');
new Pjax({
areas: [
// Try the first query.
'#header, #primary',
// Retry with the second query when the first query doesn't match.
'#container',
// Retry.
'body'
]
});
- Chrome
- Firefox
- Safari
- Edge (Chromium edition only)