chrome插件如果保证只有一个实例

我现在要开发的一个插件,功能主要是:采集用户登录某个网站后的数据,这个数据每天都会更新的。
现在的问题是:
1、如何确保用户登录网站后开始采集任务?使用哪种事件监听?
2、如果用户在浏览器打开多个页面是否会造成重复采集。
3、如何确保今天不会采集昨天重复的内容。

阅读 2.5k
1 个回答

1. 如何确保用户登录网站后开始采集任务?使用哪种事件监听?

不用监听,只要用户有登录网站,你便可以通过用户的 Session 拿到登录后的内容,只要在 background 页面中做一个定时器,每隔一段时间跑一次采集就行了。

不过需要注意,要在 manifest.json 中加入相关的权限


"permissions": [
  "tabs",
  "http://example.com/"
],

2. 如果用户在浏览器打开多个页面是否会造成重复采集。

采集任务并不依赖于用户是否打开页面,你可以用 jQuery 在 background 页面直接抓取页面内容就可以了。

$.get('http://example.com/xxx/yyy', (data) => processData(data));

至于重复内容怎么处理,可以用 url 作为判定。

3. 如何确保今天不会采集昨天重复的内容。

这个和上面的这个是一样的,用 url 作为判定,如果 url 已经采集过,就不再采集,url 可以在 localStorage 中作索引。

localStorage['http://example.com/xxx/yyy'] = new Date().getTime()