mirror of
https://github.com/lbr77/blog-astro.git
synced 2026-04-08 16:11:56 +00:00
comment
This commit is contained in:
@@ -1,25 +1,52 @@
|
||||
<div id="tcomment"></div>
|
||||
|
||||
<script>
|
||||
document.addEventListener('astro:page-load', () => {
|
||||
(()=>{
|
||||
const commentsContainer = document.getElementById('tcomment');
|
||||
if (commentsContainer) {
|
||||
const script = document.createElement('script');
|
||||
script.src = 'https://cdn.jsdelivr.net/npm/twikoo@1.6.44/dist/twikoo.min.js';
|
||||
script.async = true;
|
||||
script.onload = () => {
|
||||
const initScript = document.createElement('script');
|
||||
initScript.innerHTML = `
|
||||
twikoo.init({
|
||||
envId: 'https://twikoo.hk.nvme0n1p.dev/',
|
||||
el: '#tcomment',
|
||||
});
|
||||
`;
|
||||
document.body.appendChild(initScript);
|
||||
};
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
})();
|
||||
});
|
||||
</script>
|
||||
<script is:inline>
|
||||
(() => {
|
||||
const TWIKOO_SRC =
|
||||
'https://cdn.jsdelivr.net/npm/twikoo@1.6.44/dist/twikoo.min.js'
|
||||
const TARGET_SELECTOR = '#tcomment'
|
||||
const state = { loading: false, loaded: false }
|
||||
|
||||
const initTwikoo = () => {
|
||||
const container = document.querySelector(TARGET_SELECTOR)
|
||||
if (!container) return
|
||||
|
||||
const runInit = () => {
|
||||
if (state.loaded) return
|
||||
state.loaded = true
|
||||
window.twikoo?.init({
|
||||
envId: 'https://twikoo.hk.nvme0n1p.dev/',
|
||||
el: TARGET_SELECTOR,
|
||||
})
|
||||
}
|
||||
|
||||
if (window.twikoo) {
|
||||
runInit()
|
||||
return
|
||||
}
|
||||
|
||||
if (state.loading) return
|
||||
state.loading = true
|
||||
|
||||
const script = document.createElement('script')
|
||||
script.src = TWIKOO_SRC
|
||||
script.async = true
|
||||
script.onload = runInit
|
||||
script.onerror = (err) => {
|
||||
console.error('Failed to load Twikoo:', err)
|
||||
}
|
||||
document.head.appendChild(script)
|
||||
}
|
||||
|
||||
const onLoad = () => initTwikoo()
|
||||
|
||||
if (document.readyState === 'complete') {
|
||||
onLoad()
|
||||
} else {
|
||||
window.addEventListener('load', onLoad, { once: true })
|
||||
}
|
||||
|
||||
document.addEventListener('astro:page-load', onLoad)
|
||||
document.addEventListener('astro:after-swap', onLoad)
|
||||
})()
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user