head.load.min.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. /**
  2. Head JS The only script in your <HEAD>
  3. Copyright Tero Piirainen (tipiirai)
  4. License MIT / http://bit.ly/mit-license
  5. Version 0.9
  6. http://headjs.com
  7. */(function (a) {
  8. var b = a.documentElement, c, d, e = [], f = [], g = {}, h = {},
  9. i = a.createElement("script").async === true || "MozAppearance" in a.documentElement.style || window.opera;
  10. var j = window.head_conf && head_conf.head || "head", k = window[j] = window[j] || function () {
  11. k.ready.apply(null, arguments)
  12. };
  13. var l = 0, m = 1, n = 2, o = 3;
  14. i ? k.js = function () {
  15. var a = arguments, b = a[a.length - 1], c = [];
  16. t(b) || (b = null), s(a, function (d, e) {
  17. d != b && (d = r(d), c.push(d), x(d, b && e == a.length - 2 ? function () {
  18. u(c) && p(b)
  19. } : null))
  20. });
  21. return k
  22. } : k.js = function () {
  23. var a = arguments, b = [].slice.call(a, 1), d = b[0];
  24. if (!c) {
  25. f.push(function () {
  26. k.js.apply(null, a)
  27. });
  28. return k
  29. }
  30. d ? (s(b, function (a) {
  31. t(a) || w(r(a))
  32. }), x(r(a[0]), t(d) ? d : function () {
  33. k.js.apply(null, b)
  34. })) : x(r(a[0]));
  35. return k
  36. }, k.ready = function (a, b) {
  37. if (a == "dom") {
  38. d ? p(b) : e.push(b);
  39. return k
  40. }
  41. t(a) && (b = a, a = "ALL");
  42. var c = h[a];
  43. if (c && c.state == o || a == "ALL" && u() && d) {
  44. p(b);
  45. return k
  46. }
  47. var f = g[a];
  48. f ? f.push(b) : f = g[a] = [b];
  49. return k
  50. }, k.ready("dom", function () {
  51. c && u() && s(g.ALL, function (a) {
  52. p(a)
  53. }), k.feature && k.feature("domloaded", true)
  54. });
  55. function p(a) {
  56. a._done || (a(), a._done = 1)
  57. }
  58. function q(a) {
  59. var b = a.split("/"), c = b[b.length - 1], d = c.indexOf("?");
  60. return d != -1 ? c.substring(0, d) : c
  61. }
  62. function r(a) {
  63. var b;
  64. if (typeof a == "object") for (var c in a) a[c] && (b = {name: c, url: a[c]}); else b = {name: q(a), url: a};
  65. var d = h[b.name];
  66. if (d && d.url === b.url) return d;
  67. h[b.name] = b;
  68. return b
  69. }
  70. function s(a, b) {
  71. if (a) {
  72. typeof a == "object" && (a = [].slice.call(a));
  73. for (var c = 0; c < a.length; c++) b.call(a, a[c], c)
  74. }
  75. }
  76. function t(a) {
  77. return Object.prototype.toString.call(a) == "[object Function]"
  78. }
  79. function u(a) {
  80. a = a || h;
  81. var b = false, c = 0;
  82. for (var d in a) {
  83. if (a[d].state != o) return false;
  84. b = true, c++
  85. }
  86. return b || c === 0
  87. }
  88. function v(a) {
  89. a.state = l, s(a.onpreload, function (a) {
  90. a.call()
  91. })
  92. }
  93. function w(a, b) {
  94. a.state || (a.state = m, a.onpreload = [], y({src: a.url, type: "cache"}, function () {
  95. v(a)
  96. }))
  97. }
  98. function x(a, b) {
  99. if (a.state == o && b) return b();
  100. if (a.state == n) return k.ready(a.name, b);
  101. if (a.state == m) return a.onpreload.push(function () {
  102. x(a, b)
  103. });
  104. a.state = n, y(a.url, function () {
  105. a.state = o, b && b(), s(g[a.name], function (a) {
  106. p(a)
  107. }), d && u() && s(g.ALL, function (a) {
  108. p(a)
  109. })
  110. })
  111. }
  112. function y(c, d) {
  113. var e = a.createElement("script");
  114. e.type = "text/" + (c.type || "javascript"), e.src = c.src || c, e.async = false, e.onreadystatechange = e.onload = function () {
  115. var a = e.readyState;
  116. !d.done && (!a || /loaded|complete/.test(a)) && (d(), d.done = true)
  117. }, b.appendChild(e)
  118. }
  119. setTimeout(function () {
  120. c = true, s(f, function (a) {
  121. a()
  122. })
  123. }, 0);
  124. function z() {
  125. d || (d = true, s(e, function (a) {
  126. p(a)
  127. }))
  128. }
  129. window.addEventListener ? (a.addEventListener("DOMContentLoaded", z, false), window.addEventListener("onload", z, false)) : window.attachEvent && (a.attachEvent("onreadystatechange", function () {
  130. a.readyState === "complete" && z()
  131. }), window.frameElement == null && b.doScroll && function () {
  132. try {
  133. b.doScroll("left"), z()
  134. } catch (a) {
  135. setTimeout(arguments.callee, 1);
  136. return
  137. }
  138. }(), window.attachEvent("onload", z)), !a.readyState && a.addEventListener && (a.readyState = "loading", a.addEventListener("DOMContentLoaded", handler = function () {
  139. a.removeEventListener("DOMContentLoaded", handler, false), a.readyState = "complete"
  140. }, false))
  141. })(document)