[关闭]
@zoand 2015-07-01T23:26:24.000000Z 字数 1993 阅读 1952

chrome标签行为监测API

chrome插件


由于标签的操作行为比较多,所以相应的监视事件也很多。监控标签行为的事件包含onCreatedonUpdatedonMovedonActivatedonHighlightedonDetachedonAttachedonRemoved和onReplaced

大部分事件都比较好理解,下面重点记录不易理解的事件。

onHighlighted是当标签被高亮显示时所触发的事件,activehighlight是有区别的,active是指标签在当前窗口中正被显示,highlight只是标签的颜色被显示成了白色——如果此标签没有被选中正常情况下是浅灰色。onDetached是当标签脱离窗口时所触发的事件,导致此事件触发的原因是用户在两个不同的窗口直接拖拽标签。onAttached是标签附着到窗口上时所触发的事件,同样是用户在两个不同的窗口直接拖拽标签导致的。onReplaced是当标签被其他标签替换时触发的事件。

要解释清楚onReplaced就不得不提一下即搜即得和预呈现(Instant search,Prerendering)。例如默认搜索引擎为 Google,启用了即搜即得,网络条件也足够好,在打开的另一个网页地址栏中开始输入关键字并且即时出现结果时,此时按下回车键,当前标签页就会被Google搜索结果替换,产生onReplaced事件。如果扩展程序通过tabId 追踪标签页的话就必须处理该事件。

  1. chrome.tabs.onCreated.addListener(function(tab){
  2. console.log(tab);
  3. });
  4. chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){
  5. console.log('Tab '+tabId+' has been changed with these options:');
  6. console.log(changeInfo);
  7. });
  8. chrome.tabs.onMoved.addListener(function(tabId, moveInfo){
  9. console.log('Tab '+tabId+' has been moved:');
  10. console.log(moveInfo);
  11. });
  12. chrome.tabs.onActivated.addListener(function(activeInfo){
  13. console.log('Tab '+activeInfo.tabId+' in window '+activeInfo.windowId+' is active now.');
  14. });
  15. chrome.tabs.onHighlighted.addListener(function(highlightInfo){
  16. console.log('Tab '+activeInfo.tabId+' in window '+activeInfo.windowId+' is highlighted now.');
  17. });
  18. chrome.tabs.onDetached.addListener(function(tabId, detachInfo){
  19. console.log('Tab '+tabId+' in window '+detachInfo.oldWindowId+' at position '+detachInfo.oldPosition+' has been detached.');
  20. });
  21. chrome.tabs.onAttached.addListener(function(tabId, attachInfo){
  22. console.log('Tab '+tabId+' has been attached to window '+detachInfo.newWindowId+' at position '+detachInfo.newPosition+' .');
  23. });
  24. chrome.tabs.onRemoved.addListener(function(tabId, removeInfo){
  25. console.log('Tab '+tabId+' in window '+removeInfo.windowId+', and the window is '+(removeInfo.isWindowClosing?'closed.':'open.'));
  26. });
  27. chrome.tabs.onReplaced.addListener(function(addedTabId, removedTabId){
  28. console.log('Tab '+removedTabId+' has been replaced by tab '+addedTabId+'.');
  29. );

通过标签接口,扩展可以更灵活地处理不同标签。虽然标签涉及到的内容很多,但常用的部分很有限。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注