web commit by http://per.bothner.myopenid.com/: JavaScript tip to enable browsing...
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Mon, 10 Sep 2007 04:32:55 +0000 (04:32 +0000)
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Mon, 10 Sep 2007 04:32:55 +0000 (04:32 +0000)
doc/tips/JavaScript_to_add_index.html_to_file:_links.mdwn [new file with mode: 0644]

diff --git a/doc/tips/JavaScript_to_add_index.html_to_file:_links.mdwn b/doc/tips/JavaScript_to_add_index.html_to_file:_links.mdwn
new file mode 100644 (file)
index 0000000..a11c807
--- /dev/null
@@ -0,0 +1,39 @@
+The source file `foo/bar.mdwn` or `foo/bar.html` generates the
+page `foo/bar/index.html`, but the links to the page appear
+as "`foo/bar/`".  This is fine (and recommended) for pages
+served by an http server, but it doesn't work when browsing
+the pages directly using `file:` URL.  The latter might be
+desirable when testing pages before upload, or if you want to
+read pages when off-line without access to a web server.
+
+Here is a JavaScript "`onload`" script which fixes the URLs
+if the `local.protocol` isn't `http` or `https`:
+
+       function fixLinks() {
+         var scheme = location.protocol;
+        if (scheme=="http:" || scheme=="https:") return;
+        var links = document.getElementsByTagName("a");
+         for (var i = links.length; --i >= 0; ) {
+          var link = links[i];
+           var href = link.href;
+           var hlen = href.length;
+          if (hlen > 0 && link.protocol==scheme && href.charAt(hlen-1) == "/")
+            links[i].href = href + "index.html";
+         }
+       }
+
+This can be placed in `page.tmpl`:
+
+       <html>
+       <head>
+       <script language="JavaScript">
+       function fixLinks() {
+       ...
+       }
+       </script>
+       </head>
+       <body onload="javascript:fixLinks();">
+       ...
+       </html>
+
+This script has not been extensively tested.
\ No newline at end of file