aboutsummaryrefslogtreecommitdiff
path: root/doc/tips/JavaScript_to_add_index.html_to_file:_links.mdwn
diff options
context:
space:
mode:
Diffstat (limited to 'doc/tips/JavaScript_to_add_index.html_to_file:_links.mdwn')
-rw-r--r--doc/tips/JavaScript_to_add_index.html_to_file:_links.mdwn63
1 files changed, 63 insertions, 0 deletions
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
index 000000000..250bb26af
--- /dev/null
+++ b/doc/tips/JavaScript_to_add_index.html_to_file:_links.mdwn
@@ -0,0 +1,63 @@
+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.
+
+---
+
+A version that handles anchors:
+
+
+ function fixLinks() {
+ var scheme = location.protocol;
+ if (scheme != "file:") return;
+ var links = document.getElementsByTagName("a");
+ for (var i = links.length; --i >= 0; ) {
+ var link = links[i];
+ var href = link.href;
+ var anchor = "";
+ var anchorIndex = href.indexOf("#");
+ if (anchorIndex != -1) {
+ anchor = href.substring(anchorIndex);
+ href = href.substring(0, anchorIndex);
+ };
+ var hlen = href.length;
+ if (hlen > 0 && link.protocol==scheme && href.charAt(hlen-1) == "/")
+ links[i].href = href + "index.html" + anchor;
+ }
+ }