我有一个托管仪表板的网站:我可以在页面上编辑JavaScript,目前每五秒钟刷新一次。
我现在想让window.print()
每天早上8点运行。
我该怎么办?
最佳答案
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只是为您提供了一个接口(interface))在本地使用另一种脚本语言)。
如果您在OS X上并且真的想使用JavaScript,我认为这是要走的路。
截至本文撰写时,与上述链接的发行说明似乎是唯一的现有文档(约塞米蒂公开发布后约2个月),但值得一读。您还可以查看javascript-automation标签以获得一些示例。
我还发现JXA Cookbook非常有用。
您可能需要对这种方法进行一些调整,以适应您的特定情况,但我将进行概述。
window.print()
。您可以这样做(或更普遍地说,在Safari选项卡中执行任意JS):var safari = Application('Safari');
safari.doJavaScript('window.print();', { in: safari.windows[0].currentTab });
windows
。 File -> Save
或⌘+ S)保存为应用程序在您可以找到的位置(或iCloud)。 而已!每当将事件设置为运行时,您在Application文件中编写的JavaScript代码就会运行。您应该可以返回到Automator中的文件,并在需要时修改代码。
关于javascript - 在JavaScript中,如何在特定时间运行函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24741530/