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 语法
参数
监听器-
当此事件发生时调用的函数。该函数将传递此参数
filter可选-
object。一个包含单个属性url的对象,该属性是Array,其中包含events.UrlFilter对象。如果包含此参数,则事件仅针对匹配数组中至少一个UrlFilter的过渡触发。如果省略此参数,则事件针对所有过渡触发。请注意,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。
示例
如果目标的主机名包含“example.com”或以“developer”开头,则记录 onCreatedNavigationTarget 的目标 URL、源标签页 ID 和源框架 ID。
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。