在firefox中获取选项卡导航事件

Getting tab navigation events in firefox

本文关键字:导航 事件 选项 获取 firefox      更新时间:2023-09-26

我正在开发一个扩展,用于检测后台运行的youtube视频并将其记录下来。

我无法从高级tabs API获得的是选项卡的导航事件

例如,当我访问youtube.com时,我可以从"就绪"事件中获取该事件。

但当我点击视频链接将其加载到同一个选项卡中时,我不会收到任何事件。此外,当一个新视频在最后一个视频结束后自动加载(自动播放)时,我不会收到任何事件。

如何获得这些更改?

我目前的破解方法是循环浏览所有打开的选项卡,每隔10-20秒检查一次"youtube.com/watch?v="子字符串。

编辑:

代码:

var buttons = require('sdk/ui/button/action');
var tabs = require("sdk/tabs");
var listen = 1;

var button = buttons.ActionButton({
  id: "activate",
  label: "Start Listening",
  icon: {
    "16": "./icon-16.png",
    "32": "./icon-32.png",
    "64": "./icon-64.png"
  },
  onClick: toggleListen
});
//check tabs
var { setInterval } = require("sdk/timers");
setInterval(function() {
    suburl = "www.youtube.com/watch"
    for (let tab of tabs){
        if(tab.url.indexOf(suburl)>-1){
            console.log("tab: ",tab.url);
        }
    }
  console.log("'n--------------------------------'n'n");
}, 15000)

你应该试试这样的东西:

var tabs = require("sdk/tabs");
const YOUTUBE_URI = /^https:'/'/www.youtube.com/;
tabs.on("load", function(tab) {
  if (YOUTUBE_URI.test(tab.url)) {
    console.log('tabWatcher: ' + t.url + ' is shown for the first time');
  }
});
tabs.on("activate", function(tab) {
  if (tab.readyState=='complete') {
    if (YOUTUBE_URI.test(tab.url)) {
      console.log('tabWatcher: ' + t.url + ' is shown again');
    }
  }
});