JavaScript 不是 的工具。如果您想在每天的特定时间运行某些东西,那么您几乎肯定会寻找在本地运行的东西,例如 python 或 applescript。
但是,让我们考虑一下 JavaScript 是您唯一的选择。有几种方法可以做到这一点,但我会给你最简单的。
首先,您必须创建一个new Date() 并设置检查间隔以查看小时是否为 8(对于上午 8 点)。
这将检查每分钟(60000 毫秒)是否是八点:
window.setInterval(function(){ // Set interval for checking
var date = new Date(); // Create a Date object to find out what time it is
if(date.getHours() === 8 && date.getMinutes() === 0){ // Check the time
// Do stuff
}
}, 60000); // Repeat every 60000 milliseconds (1 minute)
它不会在准确 8 点钟执行(除非您立即开始运行它),因为它正在检查每分钟一次。您可以尽可能地减少间隔以提高检查的准确性,但这有点过头了:它将检查 每分钟 每小时 每天 看看是否是 8 点。
检查的强度是由于 JavaScript 的性质:对于这类事情有更好的语言和框架。由于 JavaScript 会在您加载网页时在网页上运行,因此它并不意味着处理持久的、扩展的任务。
还要意识到,这需要在其上执行的网页打开。也就是说,如果页面未打开并每分钟进行计数和检查,您将无法在每天早上 8 点执行预定操作。
您说您已经每五秒刷新一次页面:如果这是真的,您根本不需要计时器。每次刷新页面时检查一下:
var date = new Date(); // Create Date object for a reference point
if(date.getHours() === 8 && date.getMinutes() === 0 && date.getSeconds() < 10){ // Check the time like above
// Do stuff
}
这样,您还必须检查秒数,因为您每五秒刷新一次,因此您会得到重复的任务。
话虽如此,您可能想要执行this 之类的操作,或者为 OS X 上的计划任务编写 Automator 工作流程。
如果您需要更多与平台无关的东西,我会认真考虑查看Python 或Bash。
作为更新,JavaScript for Automation 是在 OS X Yosemite 中引入的,它似乎提供了一种在这类事情上使用 JavaScript 的可行方法(尽管显然你没有在相同的上下文中使用它;Apple 只是为您提供在本地使用另一种脚本语言的界面)。
如果你在 OS X 上并且真的想使用 JavaScript,我认为这是要走的路。
截至本文撰写时(约塞米蒂向公众发布约 2 个月后),上面链接的发行说明似乎是唯一现有的文档,但它们值得一读。您还可以查看javascript-automation 标签中的一些示例。
我还发现JXA Cookbook 非常很有帮助。
您可能需要稍微调整此方法以适应您的特定情况,但我将提供一个总体概述。
- 在 Automator 中创建一个空白应用程序。
- 打开 Automator.app(它应该在您的 Applications 目录中)并创建一个新文档。
- 从对话框中选择“应用程序”。
- 添加一个 JavaScript 动作。
- 下一步是实际添加将要执行的 JavaScript。为此,首先将侧边栏中的“运行 JavaScript”操作添加到工作流。
-
编写 JavaScript。
-
这是您在继续之前必须知道要做什么的地方。根据您提供的内容,我假设您想在 Safari 中加载的页面上执行 window.print()。您可以这样做(或者,更一般地说,在 Safari 选项卡中执行任意 JS):
var safari = Application('Safari');
safari.doJavaScript('window.print();', { in: safari.windows[0].currentTab });
- 您可能需要根据您的设置调整要访问的
windows。
- 保存应用程序。
- 将文件作为应用程序保存(
File -> Save 或 ⌘+S)到您可以找到的位置(或 iCloud)。
- 安排它运行。
- 打开日历(或 iCal)。
- 创建一个新事件并给它一个可识别的名称;然后,将时间设置为所需的运行时间(在本例中为 8:00 AM)。
- 将活动设置为每天重复(或每周、每月等 - 无论您希望它运行的频率如何)。
- 将警报(或警报,取决于您的版本)设置为自定义。
- 选择“打开文件”并选择您保存的应用程序文件。
- 为警报时间选项选择“在事件发生时”。
就是这样!您在应用程序文件中编写的 JavaScript 代码将在每次设置为运行该事件时运行。如果需要,您应该能够返回到 Automator 中的文件并修改代码。