Javascript 在不同页面之间未重新运行

大家好,

我开发了一个使用 swiper.js 库进行轮播的主题组件。在组件的 <head> 标签中,我从 CDN 加载了 swiper 的 JS 和 CSS 文件,并在 window.ready 函数中将页面元素声明为 swiper。

我遇到的问题在于:直接访问该页面时,轮播功能正常;但如果点击 Discourse 站点中的任何链接跳转到该页面,虽然第一张幻灯片会加载,但它显示为静态图片,该组件不会自动播放(轮播),直到刷新页面后才会生效。

我怀疑这是因为在 Discourse 页面间导航时,JavaScript 并未重新执行,而只是生成了不同页面的内容。Discourse 确实是这样的机制吗?如果是,有什么解决方法吗?

你需要将这段代码放入主题组件中:

<script type="text/discourse-plugin" version="0.8">
    api.onPageChange(() =>{
        callYourFunctionHere();
    });
</script>