This repository has been archived on 2024-07-22. You can view files and clone it, but cannot push or open issues or pull requests.
Zaimki/plugins/hash.js

41 lines
1.3 KiB
JavaScript
Raw Normal View History

export default {
methods: {
handleHash(namespace, callback, checkAnchor = true) {
if (!process.client) {
return;
}
const doHandle = () => {
const anchor = decodeURIComponent(window.location.hash.substr(1));
const $anchor = document.getElementById(anchor);
if (checkAnchor && $anchor) {
$anchor.scrollIntoView();
} else if (!namespace) {
callback(anchor);
} else if (anchor.startsWith(namespace + '/')) {
callback(anchor.substring(namespace.length + 1));
}
}
setTimeout(_ => {
doHandle();
window.addEventListener('hashchange', function() {
doHandle();
}, false);
}, 500);
},
setHash(namespace, value) {
if (!process.client) {
return;
}
history.pushState(
'',
document.title,
window.location.pathname + window.location.search
+ (value ? '#' + (namespace ? namespace + '/' + value : value) : '')
);
},
}
}