# 如何绕过导航时的DOMContentLoaded

**URL:** <https://meta.discourse.org/t/how-to-get-around-domcontentloaded-for-navigation/351748>\
**Category:** Development\
**Created:** [2025年二月11日 21:38 UTC](https://meta.discourse.org/t/how-to-get-around-domcontentloaded-for-navigation/351748 "2025-02-11T21:38:15Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![ddsgad](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ddsgad/32/486614_2.png) [@ddsgad](https://meta.discourse.org/u/ddsgad)\
**Post date:** [2025年二月11日 21:38 UTC](https://meta.discourse.org/t/how-to-get-around-domcontentloaded-for-navigation/351748/1 "2025-02-11T21:38:15Z")

</div>

我们有一个在 DOMContentLoaded 上运行的 js 函数，document.addEventListener(“DOMContentLoaded”, OURFUNCTION)。

刷新浏览器时运行正常，但在浏览网站时却从未显示。我推测这是因为 Discourse 只加载一次 DOM，然后其余部分通过客户端导航处理，就像 SPA 一样。所以我想知道，我们如何在 Discourse 本身中导航更改时运行该函数？以前可以通过插件 API 轻松做到这一点，但那些 API 已被弃用，而且我在任何组件中都看不到它们了。是否仍有简单的方法可以做到这一点？或者我们需要创建一个完整的组件来仅在导航更改时执行一些 JavaScript？谢谢。

---

_[View the full topic](https://meta.discourse.org/t/how-to-get-around-domcontentloaded-for-navigation/351748)._
