检测浏览器是否没有系统活动(包括浏览器外的活动)

时间:2010-09-18 05:06:22

标签: javascript silverlight browser activex

我需要检测系统中是否没有用户活动(例如屏幕保护程序) - 所有这些都来自网络浏览器。

据我所知,使用纯JavaScript无法实现。浏览器中有一个用于侦测空闲输入的库:jquery-idletimer-plugin

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

以前有人这样做过吗?有什么建议吗?

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

3 个答案:

答案 0 :(得分:3)

没有任何可靠的方法来执行 永远 。正如Denis所说,你不能用Silverlight和ActiveX只在Internet Explorer中工作,所以如果这是你的应用程序的一个关键部分,那么你最好有一些 非常好的理由 < / strong>让我使用它,否则我为什么要启动IE(以及我的机器上带有Windows的机器)?

天啊,即使我要使用IE浏览器,为什么要打开一个监控浏览器 OUTSIDE 活动的网站?谁告诉我你没有同时记录我的按键,是吗?

在这个星球上没有充分的理由在浏览器中做这样的事情,你实际上是通过规避浏览器的安全模型来摧毁应用程序中的所有信任。沙箱是有充分理由的,否则上网就像下载随机文件并执行它们一样危险......

所以无论你想用它做什么,请放弃它并寻找更好的解决方案A:跨浏览器/平台工作和B:不要让你的应用程序看起来像是可以窃取我的密码一天。

答案 1 :(得分:1)

如果你真的需要这个,(我希望它是一个要求这样的功能的客户)你应该编写自己的浏览器(C#允许你只删除一个只有一个表单的Web浏览器控件需要很少的自定义)并让您的用户使用该浏览器(然后您可以使用该浏览器使用操作系统功能来检测空闲状态。

同样,这是假设你有一个客户要求这个,而不是一个项目将在野外,否则Ivo说的是完全正确的,我不想下载一个全新的浏览器只是为了运行一个简单的网站。

答案 2 :(得分:0)

很抱歉在这篇旧帖子中发帖,但是有办法解决这个问题,缺点是它需要JavaScript,但也可能使用任何其他用户端语言。

使用JS,您可以将超时设置为特定时间示例640000,持续10分钟。然后每次与页面进行交互(单击,滚动等等)时取消超时并再次设置。如果用户停止与页面交互10分钟,则可以执行警报或功能。用ajax关闭会话或只是提醒。

如果您无法控制服务端会话超时,并且正在进行敏感流程,这很有用,例如订单可能会损坏您的数据,如果它在系统关闭会话后提交的话。您可以在ajax中创建一个函数,该函数提交表单以保存用户输入的数据,而无需在空闲之前提交。不适用于教育网站,仅适用于需要在启动流程时从用户输入的网站。

希望这能给出一个想法。