diff --git a/files/zh-cn/mozilla/add-ons/webextensions/api/extension/onrequest/index.md b/files/zh-cn/mozilla/add-ons/webextensions/api/extension/onrequest/index.md new file mode 100644 index 00000000000000..4623ffea87eb8d --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/api/extension/onrequest/index.md @@ -0,0 +1,88 @@ +--- +title: extension.onRequest +slug: Mozilla/Add-ons/WebExtensions/API/extension/onRequest +l10n: + sourceCommit: b8a0743ca8b1e1b1b1a95cc93a4413c020f11262 +--- + +{{AddonSidebar}} + +> [!WARNING] +> 因为该方法自 Chrome 33 起被弃用,该 API 在 Firefox 中并未被实现。请改用 [runtime.onMessage](/zh-CN/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage)。 + +当从扩展进程或内容脚本发送请求时触发。 + +## 语法 + +```js-nolint +chrome.extension.onRequest.addListener(function( + request, // 可选的任意类型 + sender, // runtime.MessageSender + () => {/* … */} // 函数 +) {/* … */}) +chrome.extension.onRequest.removeListener(listener) +chrome.extension.onRequest.hasListener(listener) +``` + +事件有三个函数: + +- `addListener(listener)` + - : 添加一个该事件的监听器。 +- `removeListener(listener)` + - : 停止监听该事件。`listener` 参数是要移除的监听器。 +- `hasListener(listener)` + - : 检查 `listener` 是否注册到该事件上。若该监听器正在监听该事件则返回 `true`,否则返回 `false`。 + +## addListener 语法 + +### 参数 + +- `listener` + + - : 当此事件发生时调用的函数。该函数传递以下参数: + + - `request` + - : `any`。由调用脚本发送的请求。 + - `sender` + - : {{WebExtAPIRef('runtime.MessageSender')}}。 + - `sendResponse` + - : `function`。当你有响应时调用的函数。参数应为任何可 JSON 化的对象(如果没有响应则为 undefined)。如果在同一文档中有多个 `onRequest` 监听器,则只有一个可以发送响应。 + +## 浏览器兼容性 + +{{Compat}} + +{{WebExtExamples}} + +> [!NOTE] +> 此 API 基于 Chromium 的 [`chrome.extension`](https://developer.chrome.com/docs/extensions/reference/api/extension/#event-onRequest) API。该文档衍生自 Chromium 代码中的 [`extension.json`](https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/extension.json)。 + +