---
title: "Usercentrics"
description: "加载 Usercentrics CMP v3,并根据 UC_UI_CMP_EVENT 事件驱动 useScript 的同意触发器。"
canonical_url: "https://nuxt-scripts.zhcndoc.com/scripts/usercentrics"
last_updated: "2026-05-22T14:11:56.901Z"
---
[Usercentrics](https://usercentrics.com) 是一个同意管理平台(CMP),用于在 GDPR、CCPA 以及 IAB TCF v2 框架下收集、存储并传递终端用户对第三方脚本的同意。
Nuxt Scripts 提供了 [`useScriptUsercentrics()`](/scripts/usercentrics),这样你就可以启动 CMP v3(“Web CMP”)加载器,暴露对 `window.__ucCmp` 程序化 API 的类型化访问,并将其他注册脚本的同意触发器直接连接到 Usercentrics 的 `UC_UI_CMP_EVENT` 浏览器事件。
这个组合式函数包含以下默认值:
- **触发器:客户端** 当 Nuxt 正在进行 hydration 时,脚本将加载。
- **Bundle / 代理:关闭** CMP 本身就是同意界面,因此它必须直接访问供应商源站。同时,它也不受同意门控限制。
你可以直接通过代理访问 `ucCmp` 对象,或者等待 `$script` promise。对于任何返回 void / Promise 的调用,建议使用代理。
```ts [Proxy]
const { proxy } = useScriptUsercentrics({
rulesetId: 'your-ruleset-id',
})
function showSettings() {
proxy.ucCmp.showSecondLayer()
}
```
```ts [onLoaded]
const { onLoaded } = useScriptUsercentrics({
rulesetId: 'your-ruleset-id',
})
onLoaded(({ ucCmp }) => {
ucCmp.showFirstLayer()
})
```
## 从 Usercentrics 驱动同意触发器
将 `consent.onConsentChange(...)` 与 [`useScriptTriggerConsent`](/docs/api/use-script-trigger-consent) 配对使用,即可在用户通过 Usercentrics 横幅选择同意的瞬间加载任何第三方脚本。
```vue
```
`onConsentChange` 会返回一个清理函数,因此你可以在 `onScopeDispose` 中取消订阅。回调会接收原始的 `UC_UI_CMP_EVENT` 详情(例如 `{ type: 'ACCEPT_ALL' | 'DENY_ALL' | 'SAVE', ... }`)。
## 打开同意界面
在 CMP API 准备好之前,`__ucCmp` 的方法都不会生效。使用 `consent.whenReady()` 来等待它,或者直接调用 `consent` 上的辅助方法(在 CMP 启动期间它们不会生效):
```vue
```
## 自动阻止
如果你的 Usercentrics ruleset 使用的是 **自动阻止**(而不是手动阻止),请设置 `autoblocker: true`,以便在加载器之前注入 autoblocker 模块:
```ts
useScriptUsercentrics({
rulesetId: 'your-ruleset-id',
autoblocker: true,
})
```
## 示例
在 Nuxt 就绪时,通过 `app.vue` 加载 Usercentrics。
```vue [app.vue]
```
## Partytown
不要在 Partytown 下运行 Usercentrics。`__ucCmp` API 的方法调用非常密集,且不适合跨 worker 边界转发;同时,CMP 需要主线程的 DOM 访问来渲染其 UI 覆层。