]> git.sur5r.net Git - i3/i3.github.io/blobdiff - _templates/i3.mako
externalize gallery.js, asynchronously load javascript after the page loading finished
[i3/i3.github.io] / _templates / i3.mako
index 27a553e3bd096d9e501d439c8e998a2f4a915bba..9faf64015d6320403d6d1f1ed719ec00ced112e8 100644 (file)
@@ -1,5 +1,7 @@
 <%!
-
+    require_jquery = False
+    javascript = None
+    js_callback = ''
 %><!DOCTYPE html>
 <html>
     <head>
         <meta name="description" content="i3 is a dynamic tiling window manager with clean, readable and documented code, featuring extended Xinerama support, usage of libxcb instead of xlib and several improvements over wmii">
         <meta name="keywords" content="i3, window, manager, tiling, keyboard, wmii, x11, xcb, xinerama, utf8">
         <meta name="author" content="i3 developers">
+% if self.attr.javascript:
+        <script type="text/javascript">
+function loadjs() {
+% if not self.attr.require_jquery:
+    var element = document.createElement("script");
+    element.src = "/js/${self.attr.javascript}";
+    document.body.appendChild(element);
+% else:
+    var jquery_done = false,
+        script_done = false;
+    var head = document.getElementsByTagName('head')[0];
+
+    var element = document.createElement("script");
+    element.src = "/js/jquery.1.6.2.min.js";
+    element.onload = element.onreadystatechange = function() {
+        if (!jquery_done && (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete')) {
+            jquery_done = true;
+            if (script_done) {
+                ${self.attr.js_callback}
+            }
+            element.onload = element.onreadystatechange = null;
+        }
+    };
+    document.body.appendChild(element);
+
+    var script = document.createElement("script");
+    script.src = "/js/${self.attr.javascript}";
+    script.onload = script.onreadystatechange = function() {
+        if (!script_done && (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete')) {
+            script_done = true;
+            if (jquery_done) {
+                ${self.attr.js_callback}
+            }
+            script.onload = script.onreadystatechange = null;
+        }
+    };
+    document.body.appendChild(script);
+
+% endif
+}
+
+if (window.addEventListener)
+    window.addEventListener("load", loadjs, false);
+else if (window.attachEvent)
+    window.attachEvent("onload", loadjs);
+else window.onload = loadjs;
+        </script>
+%endif
     </head>
     <body>
         <div id="main">