2010-09-18 60 views
3

我需要检测系统中是否没有用户活动(例如屏幕保护程序的功能) - 全部来自Web浏览器。检测是否没有来自浏览器的系统活动(包括浏览器之外的活动)

据我所知这是不可能实现的使用纯JavaScript。在浏览器中有一个用于检测空闲输入的库,但是:jquery-idletimer-plugin

对于系统空闲事件,我在考虑ActiveX控件或SilverLight。

以前有人做过这个吗?任何建议?

UPDATE:我认为一个合理的解决方案是在用户的计算机上运行一个帮助器应用程序,并向浏览器发送空闲事件。所以,新的问题是,如何从Windows应用程序发送消息到打开的浏览器(基于Webkit,打开我的Web应用程序),以便从JavaScript中获取消息?

+0

因为这个问题*完全*不反对用户imprivacy和跨浏览器不兼容。 – 2010-09-18 05:11:03

+0

Silverlight绝对不在。 ActiveX有几乎完全的系统访问权限,所以它可能会诀窍 – Denis 2010-09-18 05:43:53

+0

@Delan - 可能有一些......呃,狭隘的有效场景可以使用它;例如,我正在维护一个Silverlight时间跟踪应用程序,我很想添加一个基于浏览器的功能,以允许用户“启动”一个工作项目,并且如果用户空闲5或10分钟。当然,这不是真的可能(除非可能在浏览器模式?不知道)。 – 2010-09-18 08:02:37

回答

1

如果你真的需要这一点,(我希望它的客户,谁问这样的功能),你应该写自己的浏览器(C#允许你刚落web浏览器控件的窗体上只需要一点定制),并让你的用户使用该浏览器(然后你可以使用它来检测使用操作系统功能的空闲状态

再次这是假设你有一个客户端,要求这个而不是一个项目,这将是在野外,否则什么伊沃说是完全真实的,我不希望下载一个全新的浏览器只是运行一个简单的网站。

+0

这似乎是一个不错的选择。我会去webkit,虽然 - 我不需要一个完整的浏览器 - 只是一个桌面应用程序,运行我的网络应用程序,并增加了一些额外的功能。我想知道钛是否会是一个很好的选择。 – Muxa 2010-09-18 23:34:57

+0

我已经用一个新的想法更新了这个问题,希望能够使系统更安全。 – Muxa 2010-09-23 07:03:11

+0

我想你误解了我的意思。我的意思是根本不使用标准浏览器,而是在其他桌面应用程序中显示所有内容,然后您可以使用空闲检测代码更改浏览器控件的HTML(如果使用C#),就像使用JavaScript完成一样。 – 2010-09-24 14:44:58

3

不会有这样不断的任何可靠的方法。丹尼斯说,你不能使用Silverlight做和ActiveX只能在Internet Explorer中,所以如果这是你的应用程序的一个重要组成部分,那么你应该最好有一些真的很好的理由我使用它,否则为什么我应该启动IE浏览器(并且在我的情况下是一台装有Windows的机器)?

地狱,即使我会使用IE,为什么我应该打开一个网站,监视我的浏览器的活动OUTSIDE?谁在告诉我你没有在同一时间记录我的按键,是吧?

有在这个星球上没有很好的理由,从浏览器中做这样的事,你基本上绕开浏览器的安全模型摧毁你的应用程序中所有的信任。沙箱是有很好的理由,否则网上冲浪就像下载随机文件和执行它们一样危险...

所以,无论你想用这个来实现,请放弃它并搜索一个更好的解决方案,答:跨浏览器/平台和B:不会让你的应用程序看起来像它可以窃取我的密码的任何一天。

+0

你使用Linux吗? ;) – 2010-09-18 08:04:14

+0

的确,我的确,我的上网本上只安装了Win7 Starter,而我告诉你这真是太糟糕了......但是上网本上的Ubuntu运行良好;) – 2010-09-18 08:06:19

+0

感谢您的回复。我的确了解这方面的所有安全和技术含义。我的情景是一个基于网络的时间跟踪工具。在浏览器外部进行活动跟踪是完全可选的,当然只能在IE上使用ActiveX。所以,看起来不值得去做。 – Muxa 2010-09-18 23:30:44

0

对不起这个旧后张贴,但有一种解决此问题的方法,缺点是它需要JavaScript,但也可能使用任何其他用户端语言。

随着JS可以将超时设置为一个特定的时间如640000 10分钟。然后在每次与页面进行交互(点击,滚动等)时取消超时并重新设置。如果用户停止与该页面交互10分钟,则可以执行警报或功能。或者用ajax关闭会话,或者只是提醒一下。

当你没有控制你的服务端会话超时,并且有一个敏感的过程正在进行时,如系统关闭会话后提交的订单可能会损坏你的数据。你可以在ajax中创建一个提交表单的函数来保存用户输入的数据,而不用在空闲前提交。对于教育网站不利,只适用于需要用户在进程启动时输入的网站。

希望这给出一个想法。