webNavigation.onCreatedNavigationTarget
当创建一个新窗口或现有窗口中的新标签以承载导航目标时触发。例如,当以下情况发生时会发送此事件:
- 用户在新标签或窗口中打开链接
- 网页使用
window.open()
将资源加载到新标签或窗口中(但请注意,如果浏览器的弹出窗口阻止程序阻止了加载,则不会发送事件)。
如果创建标签或窗口没有导航目标(例如,用户按 Ctrl+T 打开新标签),则不会发送事件。
如果触发此事件,它将在 webNavigation.onBeforeNavigate
之前触发。
语法
browser.webNavigation.onCreatedNavigationTarget.addListener(
listener, // function
filter // optional object
)
browser.webNavigation.onCreatedNavigationTarget.removeListener(listener)
browser.webNavigation.onCreatedNavigationTarget.hasListener(listener)
事件具有三个功能
addListener(listener)
-
向此事件添加侦听器。
removeListener(listener)
-
停止侦听此事件。
listener
参数是要删除的侦听器。 hasListener(listener)
-
检查
listener
是否注册到此事件。如果正在侦听,则返回true
,否则返回false
。
addListener 语法
参数
listener
-
当此事件发生时调用的函数。该函数传递此参数
filter
可选-
object
。包含单个属性url
的对象,该属性是events.UrlFilter
对象的Array
。如果您包含此参数,则事件仅针对与数组中至少一个UrlFilter
匹配的 URL 的转换触发。如果您省略此参数,则事件将针对所有转换触发。请注意,filter
在 Firefox 中不受支持。
其他对象
details
sourceFrameId
-
integer
。启动导航的框架的 ID。0
表示框架是标签的顶级浏览上下文,而不是嵌套的<iframe>
。正值表示导航是从嵌套的 iframe 启动的。框架 ID 对给定的标签和进程是唯一的。 processId
可选 已弃用-
integer
。此值在现代浏览器中未设置。当它被设置时,它表示导航起源的进程的 ID。 sourceTabId
-
integer
。启动导航的标签的 ID。例如,如果用户在新标签中打开链接,这将是包含链接的标签的 ID。 tabId
-
integer
。新创建标签的 ID。 timeStamp
-
number
。浏览器创建导航目标的时间,以 自纪元以来的毫秒数 为单位。 url
-
string
。将在新标签中加载的 URL。 windowId
-
number
。创建新标签的窗口的 ID。
浏览器兼容性
BCD 表格仅在浏览器中加载
示例
记录 onCreatedNavigationTarget
的目标 URL、源标签 ID 和源框架 ID,如果目标的主机名包含 "example.com" 或以 "developer" 开头。
const filter = {
url: [{ hostContains: "example.com" }, { hostPrefix: "developer" }],
};
function logOnCreatedNavigationTarget(details) {
console.log(`onCreatedNavigationTarget: ${details.url}`);
console.log(details.sourceTabId);
console.log(details.sourceFrameId);
}
browser.webNavigation.onCreatedNavigationTarget.addListener(
logOnCreatedNavigationTarget,
filter,
);
注意:此 API 基于 Chromium 的 chrome.webNavigation
API。本文档源自 Chromium 代码中的 web_navigation.json
。