For my presentation at Macworld in January I created a semi-time-lapse screen capture of a complete InstaDMG run to run as a demo. Since different parts of it were going to fly by at different rates I wanted to have some sort of timer to show the real clock time. Looking around for some little application or widget I did not find anything I like, and I finally gave in and made one myself.
Since I wanted this done fast, and with something I could easily control with AppleScript (sense the rest of the demo was being driven by it anyways), I decided to create a little JavaScript timer, and run it inside Safari.
<html>
<head>
<title>Timer</title>
<script>
var hours = null, minutes = null, seconds = null
var startTime = null
var currentTimer = null
function startTimer() {
// setup things
hours = document.getElementById("hours")
minutes = document.getElementById("minutes")
seconds = document.getElementById("seconds")
startTime = new Date()
displayTimer();
}
function displayTimer() {
currentTime = new Date(new Date() - startTime)
seconds.innerHTML = currentTime.getUTCSeconds()
minutes.innerHTML = currentTime.getUTCMinutes()
hours.innerHTML = currentTime.getUTCHours()
currentTimer = setTimeout('displayTimer()',500);
}
function stopTimer() {
clearTimeout(currentTimer)
}
</script>
<style>
body { font-size: large }
div { width: .65in; display: inline-table; font-size: .5in; text-align: right }
</style>
</head>
<body>
<div id="hours">0</div> hrs <div id="minutes">0</div> min <div id="seconds">0</div> sec
</body>
</html>
<head>
<title>Timer</title>
<script>
var hours = null, minutes = null, seconds = null
var startTime = null
var currentTimer = null
function startTimer() {
// setup things
hours = document.getElementById("hours")
minutes = document.getElementById("minutes")
seconds = document.getElementById("seconds")
startTime = new Date()
displayTimer();
}
function displayTimer() {
currentTime = new Date(new Date() - startTime)
seconds.innerHTML = currentTime.getUTCSeconds()
minutes.innerHTML = currentTime.getUTCMinutes()
hours.innerHTML = currentTime.getUTCHours()
currentTimer = setTimeout('displayTimer()',500);
}
function stopTimer() {
clearTimeout(currentTimer)
}
</script>
<style>
body { font-size: large }
div { width: .65in; display: inline-table; font-size: .5in; text-align: right }
</style>
</head>
<body>
<div id="hours">0</div> hrs <div id="minutes">0</div> min <div id="seconds">0</div> sec
</body>
</html>
Then I just had to trigger it with some code like:
tell application "Safari" to do JavaScript "startTimer()" in timerDocument
Edit: figured out the problem with the hours, and the correction was to use UTC time.
No comments:
Post a Comment