3

我想为Chrome编写一个扩展,其中扩展图标上的某些鼠标操作会触发某些响应。如何捕获扩展图标上触发的事件?

例如,我想,当它被点击,双次点击,滚动点击,滚动和对

我怎样才能把事件侦听器扩展程序图标,该图标不同的表现?我不介意图标是否在地址栏或扩展栏中。

1.我实际上专注于一个事件,即“正在滚动” - 因为这是唯一可以在没有窗口焦点时触发的事件。但我认为更普遍的问题更好。

+0

这是不可能的,我的知识。 – Stan

+0

@Stan:单击和双击都可以捕捉,你可以检查我的回答 – Sudarshan

+0

@Sudarshan,这个问题主要是关于滚动事件。这是不可能的。 – Stan

回答

5

单单击和双击可以追踪使用Chrome浏览器扩展

一)Browser Action

B)Page Action

默认情况下,chrome具有BrowserPage的单鼠标单击事件侦听器通过扩展该操作,您还可以捕获双击事件。

示范单和浏览器操作

此示例代码changes browser action icon单和双击双击事件(S),同样可以使用延长page actionListenersetter

的manifest.json

清单中

{ 
    "name": "Mouse Clicks", 
    "version": "0.0.1", 
    "manifest_version": 2, 
    "description": "This demonstrates how mouse clicks are tracked", 
    "background":{ 
     "scripts":["background.js"] 
    }, 
    "browser_action":{ 
     "default_icon":"normal.png" 
    } 

} 

background.js注册浏览器操作和后台脚本

//Set click to false at beginning 
var alreadyClicked = false; 
//Declare a timer variable 
var timer; 

//Add Default Listener provided by chrome.api.* 
chrome.browserAction.onClicked.addListener(function (tab) { 
    //Check for previous click 
    if (alreadyClicked) { 
     //Yes, Previous Click Detected 

     //Clear timer already set in earlier Click 
     clearTimeout(timer); 
     console.log("Double click"); 

     //Change Icon 
     chrome.browserAction.setIcon({ 
      "path": "double.png" 
     }, function() { 
      console.log("Changed Icon for Double Click"); 
     }); 

     //Clear all Clicks 
     alreadyClicked = false; 
     return; 
    } 

    //Set Click to true 
    alreadyClicked = true; 

    //Add a timer to detect next click to a sample of 250 
    timer = setTimeout(function() { 
     //No more clicks so, this is a single click 
     console.log("Single click"); 

     //Chane Icon 
     chrome.browserAction.setIcon({ 
      "path": "single.gif" 
     }, function() { 
      console.log("Changed Icon for Single Click"); 
     }); 

     //Clear all timers 
     clearTimeout(timer); 

     //Ignore clicks 
     alreadyClicked = false; 
    }, 250); 
}); 

浏览器操作\页面操作图标可以高达19次倾斜(与设备无关的像素)。较大的图标会调整大小以适合这些小图像,理想情况下,您无法使用scroll clickscroll on

让我知道如果你需要更多的信息

+0

在这些图像上滚动很容易。有什么办法可以捕捉任意事件吗? Mousemove,scrollon,scrollclick等? – Manishearth

+0

+ Manishearth no – PAEz

+3

通过Google访问的人的头像:它看起来像'onClicked'处理程序不能与chrome默认的html弹出框一起使用。您需要删除popup.html(或任何您称之为在您的扩展中创建弹出窗口的html文件)才能生效。 – vjk2005

2

使用苏达答案我能够适应的代码,写我的答案,它看起来像这样:

var OnDoubleClickListener = function(config){ 
    // Max time between click events occurrence; 
    var CONTROL_TIME = 250; 

    //Set click to false at beginning 
    var alreadyClicked = false; 
    var timer; 

    if(config && config.onDoubleClick instanceof Function) 
    return function(tab) { 

     //Check for previous click 
     if (alreadyClicked) { 
      //Yes, Previous Click Detected 

      //Clear timer already set in earlier Click 
      clearTimeout(timer); 

      //Clear all Clicks 
      alreadyClicked = false; 


      return config.onDoubleClick.apply(config.onDoubleClick,[tab]); 
     } 

     //Set Click to true 
     alreadyClicked = true; 

     //Add a timer to detect next click to a sample of 250 
     timer = setTimeout(function() { 
      //Clear all timers 
      clearTimeout(timer); 
      //Ignore clicks 
      alreadyClicked = false; 
     }, CONTROL_TIME); 
    }; 
    throw new Error("[InvalidArgumentException]"); 
}; 

,然后一样简单:

//Add Default Listener provided by chrome.api.* 
chrome.browserAction.onClicked.addListener(new OnDoubleClickListener({ 
    onDoubleClick : function(tab) { 
     alert("Double Clicked!!!"); 
    } 
})); 
相关问题