]>
Commit | Line | Data |
---|---|---|
9a86dd57 JN |
1 | // Copyright (C) 2007, Fredrik Kuivinen <frekui@gmail.com> |
2 | // 2007, Petr Baudis <pasky@suse.cz> | |
3 | // 2008-2011, Jakub Narebski <jnareb@gmail.com> | |
4 | ||
5 | /** | |
6 | * @fileOverview Detect if JavaScript is enabled, and pass it to server-side | |
7 | * @license GPLv2 or later | |
8 | */ | |
9 | ||
10 | ||
11 | /* ============================================================ */ | |
12 | /* Manipulating links */ | |
13 | ||
14 | /** | |
15 | * used to check if link has 'js' query parameter already (at end), | |
16 | * and other reasons to not add 'js=1' param at the end of link | |
17 | * @constant | |
18 | */ | |
19 | var jsExceptionsRe = /[;?]js=[01]$/; | |
20 | ||
21 | /** | |
22 | * Add '?js=1' or ';js=1' to the end of every link in the document | |
23 | * that doesn't have 'js' query parameter set already. | |
24 | * | |
25 | * Links with 'js=1' lead to JavaScript version of given action, if it | |
26 | * exists (currently there is only 'blame_incremental' for 'blame') | |
27 | * | |
28 | * To be used as `window.onload` handler | |
29 | * | |
30 | * @globals jsExceptionsRe | |
31 | */ | |
32 | function fixLinks() { | |
33 | var allLinks = document.getElementsByTagName("a") || document.links; | |
34 | for (var i = 0, len = allLinks.length; i < len; i++) { | |
35 | var link = allLinks[i]; | |
36 | if (!jsExceptionsRe.test(link)) { // =~ /[;?]js=[01]$/; | |
37 | link.href += | |
38 | (link.href.indexOf('?') === -1 ? '?' : ';') + 'js=1'; | |
39 | } | |
40 | } | |
41 | } | |
42 | ||
43 | /* end of javascript-detection.js */ |