diff options
author | intrigeri <intrigeri@boum.org> | 2008-10-20 14:33:19 +0200 |
---|---|---|
committer | intrigeri <intrigeri@boum.org> | 2008-10-20 14:33:19 +0200 |
commit | fadb26bc1507f7fc2caaa873ad32c12f75c378aa (patch) | |
tree | 7ee389c28208e236cc4da4c3c51dbe9eae9234f0 /underlays/javascript | |
parent | 654adc105e008b57aa5b9700d7aece2a0f7b0682 (diff) | |
parent | 4a958e0c1e1d3f49c665c5d4aa89214ecbd61bdd (diff) |
Merge commit 'origin/master' into prv/po
Diffstat (limited to 'underlays/javascript')
-rw-r--r-- | underlays/javascript/ikiwiki.js | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/underlays/javascript/ikiwiki.js b/underlays/javascript/ikiwiki.js index 29de7ec6f..1252f244f 100644 --- a/underlays/javascript/ikiwiki.js +++ b/underlays/javascript/ikiwiki.js @@ -1,23 +1,38 @@ // ikiwiki's javascript utility function library -var hooks = new Array; +var hooks; + +// Run onload as soon as the DOM is ready, if possible. +// gecko, opera 9 +if (document.addEventListener) { + document.addEventListener("DOMContentLoaded", run_hooks_onload, false); +} +// other browsers window.onload = run_hooks_onload; function run_hooks_onload() { + // avoid firing twice + if (arguments.callee.done) + return; + arguments.callee.done = true; + run_hooks("onload"); } function run_hooks(name) { - for (var i = 0; i < hooks.length; i++) { - if (hooks[i].name == name) { - hooks[i].call(); + if (typeof(hooks) != "undefined") { + for (var i = 0; i < hooks.length; i++) { + if (hooks[i].name == name) { + hooks[i].call(); + } } } } function hook(name, call) { - var h={name: name, call: call}; - hooks.push(h); + if (typeof(hooks) == "undefined") + hooks = new Array; + hooks.push({name: name, call: call}); } function getElementsByClass(cls, node, tag) { |