有时 JavaScript 文件会在 DOM 完全渲染之前执行。这会导致在尝试访问 DOM 元素时出现元素不存在的错误。目前,我们使用 setTimeout 方法将执行延迟半秒,但这既不是一个好的解决方案,也不是一种好的做法。
因此,问题是如何修改 JavaScript 文件,使其仅在 DOM 完全生成后执行?
有时 JavaScript 文件会在 DOM 完全渲染之前执行。这会导致在尝试访问 DOM 元素时出现元素不存在的错误。目前,我们使用 setTimeout 方法将执行延迟半秒,但这既不是一个好的解决方案,也不是一种好的做法。
因此,问题是如何修改 JavaScript 文件,使其仅在 DOM 完全生成后执行?
如果您使用不合适的钩子(例如 $( document ).ready 或类似的钩子)来构建扩展,这是预期之中的。
Discourse 是一个 EmberJS 应用,因此任何扩展都应考虑到这一点,并挂钩到应用现有的钩子。您可以在 Developing Discourse Themes & Theme Components 了解相关信息。
@Falco 非常感谢您的回复。我会看一下,如果有效会告诉您。