gpt4 book ai didi

javascript - Chrome 扩展程序 - "webNavigation.onComitted"事件被触发两次

转载 作者:行者123 更新时间:2023-11-29 09:52:51 26 4
gpt4 key购买 nike

我现在正在开发一个 chrome 扩展程序。

我遇到这个问题,当我访问 facebook 时,“webNavigation.onComitted”事件在 facebook.com 上被触发了两次。

这是我现在的代码,但它在控制台中打印了两次“Facebook”。

// while logging in facebook.com, it prints "facebook" in console.
chrome.webNavigation.onCommitted.addListener(function(e) {

console.log("Facebook");

}, {url: [{urlPrefix : 'https://www.facebook.com/'}]})

另一方面,这段代码工作正常。当我访问 youtube.com 时,它会按我的预期在控制台中只打印一次“youtube”。

// on accessing youtube.com, it prints "youtube" in console.
chrome.webNavigation.onCommitted.addListener(function(e) {

console.log("youtube");

}, {url: [{urlPrefix : 'http://www.youtube.com/'}]})

无论如何,我希望它在访问 facebook.com 时只加载一次。
我怎样才能让它发挥作用??

如果有人知道如何解决这个问题,请帮助我!!

提前致谢!

我尝试过的

http://developer.chrome.com/extensions/webNavigation.html#events

我尝试了所有其他事件类型,例如“onBeforeNavigate”、“onCompleted”。但这并没有解决我的问题。

stackoverflow 上有用的相关帖子

Chrome extension, javascript: Why is this firing twice?

此页面与我的问题类似,但此页面讨论的是“tabs.onUpdated”事件。

因为“tabs.onUpdated”事件不提供事件过滤器,我更喜欢使用“webNavigation”API。

最佳答案

来自 http://developer.chrome.com/extensions/webNavigation.html#event-onCommitted :

frameId ( integer )

0 indicates the navigation happens in the tab content window; a positive value indicates navigation in a subframe. Frame IDs are unique within a tab.

如果您在事件处理程序中添加 console.log(e),您会看到第一个事件的 frameId = 0,而第二个事件的正数,这意味着它属于一个 iframe。如果您只对主窗口导航感兴趣,只需在事件处理程序的开头添加对 e.frameId === 0 的检查。

关于javascript - Chrome 扩展程序 - "webNavigation.onComitted"事件被触发两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18669344/

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