【问题标题】:javascript code to prevent screensaver from starting防止屏幕保护程序启动的javascript代码
【发布时间】:2011-05-29 02:27:02
【问题描述】:

我对 javascript 编程完全陌生,我有一个问题,我无法在任何地方找到答案。

我最近制作了一个简单的幻灯片来远程查看我在家用计算机上托管的照片。这本身就可以正常工作。我遇到的问题是,当我查看照片时,我不与硬件交互,这会在一段时间后导致显示器关闭。这在我的手机上看照片时特别烦人。

我的问题是:有没有办法防止这种情况发生?每次刷新照片时,我都在考虑伪造鼠标或其他事件的方向,但我不知道如何做到这一点以及是否可能。

非常感谢任何帮助!

【问题讨论】:

  • 这个问题很有趣,但是加上 JavaScript 的诸多限制,无法做到。为什么?安全。由于有好人希望明智地使用此代码,因此也有相反的人会造成伤害。
  • 在 JavaScript 手册中,如果用户尝试关闭计算机,就会触电的功能旁边...
  • 嗯,那不可能,那太糟糕了。我想这只会留下约翰的解决方案并手动关闭节电。 :\谢谢大家这么快的回答!
  • 这并不像你想象的那么不合理;例如,已经有控制屏幕亮度和方向的 API:developer.mozilla.org/en-US/docs/Web/API/Screen

标签: javascript screensaver keep-alive


【解决方案1】:

自从最初提出这个问题以来的十年里,JavaScript 已经发展为提供许多操作系统功能(通常以安全的方式)。 “唤醒锁定”功能正在慢慢实现。目前有navigator.getWakeLock接口的草稿:https://www.w3.org/TR/wake-lock/#conformance

Chrome (https://developers.google.com/web/updates/2018/12/wakelock) 和 Mozilla (https://developer.mozilla.org/en-US/docs/Archive/B2G_OS/API/Wake_Lock_API) 正在以各种方式考虑它。

【讨论】:

    【解决方案2】:

    是的,现在可以了 :)

    只需使用 NoSleep.js 库:https://github.com/richtr/NoSleep.js

    在我的 Android 平板电脑上使用 Reveal.js 幻灯片对我来说很有效

    【讨论】:

    • 只是一个警告,这个库让 Chrome 使用了大量的 CPU。当我尝试时,我的粉丝们都快疯了:github.com/richtr/NoSleep.js/issues/66
    • 对我来说,NoSleep 在桌面浏览器中不起作用。有人让它工作吗?
    • 我在带有 chrome 浏览器的安卓平板电脑上使用它,是的,它会在几个小时后挂起浏览器,所以我不时重新加载页面。但是到目前为止还没有尝试找到更好的解决方案
    【解决方案3】:

    没有。浏览器上的 JavaScript 无法与底层系统交互。在浏览器中模拟击键不会阻止屏幕保护程序打开。这是出于安全原因,这样当您访问网页时,恶意代码就不会损害系统。

    Link on JavaScript Security

    现代 JavaScript 安全模型 基于Java。理论上, 下载的脚本默认运行 在受限的“沙盒”环境中 将他们与其他人隔离开来 操作系统。脚本是 只允许访问 当前文件或密切相关的 文件(通常来自 与当前文档相同的站点)。不 授予对本地文件的访问权限 系统,其他的内存空间 运行程序,或操作 系统的网络层。遏制 这种旨在防止 故障或恶意脚本 以免对用户造成严重破坏 环境。的现实 然而,情况往往是 脚本没有像 希望。有无数 脚本可以行使权力的方式 超出您的预期,两者都通过 设计和意外。

    【讨论】:

      【解决方案4】:

      您可以使用用 c# 编写的与操作系统交互的控制台应用程序来做到这一点

      由于 js 是一种客户端浏览器语言,它只能与浏览器/bowser 交互

      【讨论】:

        【解决方案5】:

        不,JavaScript 不会影响硬件或操作系统。只需关闭显示器节能设置,直到您完成幻灯片放映。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-01-09
          • 2012-01-11
          • 2016-07-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多