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

时间:2015-12-27 18:09:49

标签: javascript firefox-addon firefox-addon-sdk

我正在制作一个扩展程序来检测在后台运行的YouTube视频并将其记录下来。

我无法从高级tabs API获取的是标签的导航事件。

例如,当我去 youtube.com 时,我可以从"准备好"事件。

但是,当我点击视频链接将其加载到同一个标签中时,我就不会收到任何活动。此外,当新视频在最后一个视频结束后自动加载(自动播放)时,我也无法获得任何活动。

如何进行这些更改?

我目前的黑客只是遍历所有打开的标签页并查看" youtube.com/watch?v ="子串每隔10-20秒。

修改

代码:

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)

1 个答案:

答案 0 :(得分:0)

你应该尝试这样的事情:

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');
    }
  }
});