gpt4 book ai didi

javascript - 从后台页面捕获所有选项卡的 onHistoryStateUpdated 事件

转载 作者:行者123 更新时间:2023-12-03 04:54:02 27 4
gpt4 key购买 nike

我正在尝试捕获webNavigation.onHistoryStateUpdated使用chrome.tabs在我的 WebExtensions 扩展中。

问题是,我只能为我创建的持久后台页面捕获 onHistoryStateUpdated 事件,该后台页面是为了监听来自所有其他选项卡的 onHistoryStateUpdated 事件!

tabs.onUpdated 事件在后台页面工作得很好,但 onHistoryStateUpdated 却不行 - 这很重要,因为我必须捕获浏览器后退/前进事件 -

<小时/>

manifest.json

{
"manifest_version": 2,

"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},

"background": {
"page": "background.html",
"persistent": true
},

"permissions": [
"tabs",
"webNavigation"
]
}

background.js

// Works not... (i.e. is not fired)
chrome.webNavigation.onHistoryStateUpdated.addListener(function(details) {
console.log("tabid", tabId);
});


// WORKS!
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
console.log("Tab #" + tabId, " has its URL to: (" + changeInfo.status + ")");
console.log("\t" + changeInfo.url);
});

最佳答案

两者都是Chrome documentationWebExtensions documentation明确声明当 history API 时会触发 webNavigation.onHistoryStateUpdated 事件。用于更改地址栏中的 URL。两者都没有声明当用户单击前进后退按钮时触发该事件。

如果您想确定导航是用户单击前进后退的结果,您将需要收听 webNavigation.onCommitted MDN 事件。该信息以包含在 transitionQualifiers 中的值 “forward_back” 形式提供。 MDN 数组。在这种情况下,transitionType 似乎仍然是浏览器最初导航到该 URL 的方法。

关于javascript - 从后台页面捕获所有选项卡的 onHistoryStateUpdated 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42516590/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com