cvpv 发表于 2024-3-8 11:52:28

请问怎么正确的处理脚本生命周期

在文档中提到了如何指定脚本的运行时机,具体可参见 (https://docs.scriptcat.org/docs/dev/meta/#run-at)。

对于我的不同代码块,它们各自有着不同的运行时机需求:

1. **ajaxHooker**代码块:
   - `ajaxHooker` 需要尽可能早地注入,以便拦截所有请求。因此,它需要在文档开始加载时就运行,这要求脚本在 `document-start`时运行。

2. **Vue**代码块:
   - Vue 代码应当在 DOM 完全加载后才注入并在页面中注册,这要求脚本在 `document-end` 时运行。

3. **pageHacker**代码块:
   -一些业务代码,`pageHacker` 旨在对页面本身的计时器或者 proxy 进行拦截和篡改。为确保页面已完全加载,此代码应在页面加载进入空闲状态后执行,这要求脚本在 `document-idle`运行。

鉴于上述不同的需求,处理这种情况的一个方法是脚本分割成几个独立的脚本,每部分根据其需要的运行时机来设置。这意味着可能需要创建三个独立的脚本文件,每个文件都使用相应的 `@run-at` 指令来满足其特定的运行时机需求

我想放到一个文件里,我该怎么做呀?

李恒道 发表于 2024-3-8 12:02:54

要理解每个参数都是干什么的
document-start是抢注
抢注之后不就可以直接用js监听其他命令事件了,不要局限于声明
document-end等价于
document.addEventListener("DOMContentLoaded", (event) => {
console.log("DOM fully loaded and parsed");
});

document-idle等价于(这个不是完全等价)
document.addEventListener("load", (event) => {});

cvpv 发表于 2024-3-8 13:14:36

李恒道 发表于 2024-3-8 12:02
要理解每个参数都是干什么的
document-start是抢注
抢注之后不就可以直接用js监听其他命令事件了,不要局限 ...

好的,谢谢大佬。

我还有一个问题。

@require与脚本内部的JavaScript代码的运行顺序是怎么样的?

当我引入一个延迟比较高的@require资源的时候,会不会阻塞脚本内容的加载?

李恒道 发表于 2024-3-9 01:31:10

cvpv 发表于 2024-3-8 13:14
好的,谢谢大佬。

我还有一个问题。


会阻塞的
页: [1]
查看完整版本: 请问怎么正确的处理脚本生命周期