Total Complexity | 9 |
Complexity/F | 1.8 |
Lines of Code | 35 |
Function Count | 5 |
Duplicated Lines | 0 |
Ratio | 0 % |
Changes | 4 | ||
Bugs | 0 | Features | 0 |
1 | 'use strict'; |
||
2 | |||
3 | function domReady(fn) { |
||
4 | var fns = [], |
||
5 | loaded = domLoaded(); |
||
6 | |||
7 | domAddEventListener(fns, loaded); |
||
8 | domHandleCallback(loaded, fns, fn); |
||
9 | } |
||
10 | |||
11 | function domLoaded() { |
||
12 | return (document.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(document.readyState); |
||
13 | } |
||
14 | |||
15 | function domAddEventListener(fns, loaded) { |
||
16 | var listener; |
||
17 | |||
18 | if (!loaded) { |
||
19 | document.addEventListener('DOMContentLoaded', listener = function () { |
||
20 | document.removeEventListener('DOMContentLoaded', listener); |
||
21 | loaded = true; |
||
22 | while (listener = fns.shift()) { |
||
23 | listener(); |
||
24 | } |
||
25 | }) |
||
26 | } |
||
27 | } |
||
28 | |||
29 | function domHandleCallback(loaded, fns, fn) { |
||
30 | if (loaded) { |
||
31 | setTimeout(fn, 0); |
||
32 | } else { |
||
33 | fns.push(fn); |
||
34 | } |
||
35 | } |
||
36 |