nsIIdleService
的定义文档是:widget/public/nsIIdleService.idl
。 It is scriptable and unfrozen (hasn't changed since Mozilla 1.9a) .
概要
该服务可使您监测到空闲时间,例如,用户没有进行鼠标或者键盘等操作。您可直接捕获到空闲的时间,但一般,需要注册一个监听。
目前 nsIIdleService
服务在 Windows, Mac OS X, and Linux (via XScreenSaver) 等系统上都已实现。
实现: @mozilla.org/widget/idleservice;1
。创建实例如:
var idleService = Components.classes["@mozilla.org/widget/idleservice;1"] .getService(Components.interfaces.nsIIdleService)
方法预览
void addIdleObserver(in nsIObserver observer, in unsigned long time) |
void removeIdleObserver(in nsIObserver observer, in unsigned long time) |
属性
属性 | 类型 | 描述 |
idleTime |
long |
The amount of time in milliseconds that has passed since the last user activity. Read only. |
方法
addIdleObserver()
添加一个observer,用于侦听使用者何时离开,及何时归来。
void addIdleObserver( in nsIObserver observer, in unsigned long time )
参数
-
observer
- The observer to be notified.
-
time
- 使用者离开多少秒钟后,开始侦听。
备注
- observer 侦听的 subject 一直是 nsIIdleSerivce 。当空闲时, observer 的 topic 是 'idle' , 当他回来时,将为 'back' 。侦听的参数中包含当前使用空闲的时间。
- 相同的 observer 可以添加两次。
- 大多数实现需要自己在 OS 中查询 idle 信息,侦听可能会出现延迟,这取决于在实现中查询的间隔时间的长度。当前实现中使用的是 5 秒钟的延迟时间。
Gecko 1.9.2 note
从版本 Gecko 1.9.2 开始,增加一个新的侦听消息:‘idle-daily’ 。
removeIdleObserver()
删除observer。
void removeIdleObserver( in nsIObserver observer, in unsigned long time )
参数
-
observer
- the observer to be removed
-
time
- 消息侦听的时间(一段时间)。
备注
删除 observer 时,根据指定的 idle 时间来删除。如果已经添加了多个 observer ,则需要删除多次。
示例:
例一:
var idleService = Components.classes["@mozilla.org/widget/idleservice;1"] .getService(Components.interfaces.nsIIdleService) setTimeout(function() { alert(idleService.idleTime) }, 1000) // if you don't use the mouse or the keyboard after running this snippet, // you'll see a number around 1000 alerted.
例二:
var idleService = Components.classes["@mozilla.org/widget/idleservice;1"] .getService(Components.interfaces.nsIIdleService) var idleObserver = { observe: function(subject, topic, data) { alert("topic: " + topic + "\ndata: " + data); } }; idleService.addIdleObserver(idleObserver, 60); // one minute // ... // Don't forget to remove the observer using removeIdleObserver! idleService.removeIdleObserver(idleObserver, 60);
Interwiki Language Links