OLD | NEW |
---|---|
1 <html> | 1 <html> |
2 <head> | 2 <head> |
3 <title>Preloader</title> | 3 <title>Preloader</title> |
4 | 4 |
5 <script> | 5 <script> |
6 function ExtractGetParameterBadlyAndInsecurely(param, defaultValue) { | 6 function ExtractGetParameterBadlyAndInsecurely(param, defaultValue) { |
7 var re = RegExp('[&?]' + param + '=([^&?#]*)'); | 7 var re = RegExp('[&?]' + param + '=([^&?#]*)'); |
8 var result = re.exec(document.location); | 8 var result = re.exec(document.location); |
9 if (result) | 9 if (result) |
10 return result[1]; | 10 return result[1]; |
11 return defaultValue; | 11 return defaultValue; |
12 } | 12 } |
13 | 13 |
14 var linksToInsert = ExtractGetParameterBadlyAndInsecurely('links_to_insert', 1); | 14 var linksToInsert = ExtractGetParameterBadlyAndInsecurely('links_to_insert', 1); |
15 var linksToRemove = ExtractGetParameterBadlyAndInsecurely('links_to_remove', 1); | 15 var linksToRemove = ExtractGetParameterBadlyAndInsecurely('links_to_remove', 1); |
mmenke
2012/12/17 17:08:18
nit: While you're here, could you rename these "n
gavinp
2012/12/17 20:34:02
Done.
| |
16 | 16 |
17 function RemoveLinkElementsAndNavigate() { | 17 var receivedPrerenderStartEvents = Array(); |
18 var receivedPrerenderStopEvents = Array(); | |
19 | |
20 function MakePrerenderStartHandlerForLink(index) { | |
21 return function() { receivedPrerenderStartEvents[index] = true; }; | |
22 } | |
23 | |
24 function MakePrerenderStopHandlerForLink(index) { | |
25 return function() { receivedPrerenderStopEvents[index] = true; }; | |
26 } | |
27 | |
28 function RemoveLinkElements() { | |
mmenke
2012/12/17 17:08:18
optional: I think the C++ part of your unit tests
gavinp
2012/12/17 20:34:02
Done.
| |
18 for (var i = 1; i <= linksToRemove; ++i) { | 29 for (var i = 1; i <= linksToRemove; ++i) { |
19 var link = document.getElementById('prerenderElement' + i); | 30 var link = document.getElementById('prerenderElement' + i); |
20 link.parentElement.removeChild(link); | 31 link.parentElement.removeChild(link); |
21 } | 32 } |
22 document.location = 'REPLACE_WITH_DESTINATION_URL'; | |
23 } | 33 } |
34 | |
mmenke
2012/12/17 17:08:18
nit: While I don't really have any preference abo
gavinp
2012/12/17 20:34:02
Done.
| |
24 </script> | 35 </script> |
25 | 36 |
26 </head> | 37 </head> |
27 <body> | 38 <body> |
28 <script> | 39 <script> |
29 for (var i = 1; i <= linksToInsert; ++i) { | 40 for (var i = 1; i <= linksToInsert; ++i) { |
mmenke
2012/12/17 17:08:18
Is there a reason you go from 1 to linksToInsert,
gavinp
2012/12/17 20:34:02
Likely I was channeling PASCAL. Fixed.
| |
30 document.write( | 41 document.write( |
31 '<link id="prerenderElement' + i + | 42 '<link id="prerenderElement' + i + |
32 '" rel="prerender" href="REPLACE_WITH_PRERENDER_URL"/>'); | 43 '" rel="prerender" href="REPLACE_WITH_PRERENDER_URL"/>'); |
44 var link = document.getElementById('prerenderElement' + i); | |
45 link.addEventListener('webkitprerenderstart', | |
46 MakePrerenderStartHandlerForLink(i), false); | |
47 link.addEventListener('webkitprerenderstop', | |
48 MakePrerenderStopHandlerForLink(i), false); | |
mmenke
2012/12/17 17:08:18
optional: Maybe I just have a bias against funtio
gavinp
2012/12/17 20:34:02
You may have such a bias; it's also plausible that
| |
33 } | 49 } |
34 </script> | 50 </script> |
35 <a href="REPLACE_WITH_DESTINATION_URL">Link To Click</a> | 51 <a id="toClick" href="REPLACE_WITH_DESTINATION_URL">Link To Click For First Prer ender</a> |
36 </body> | 52 </body> |
37 </html> | 53 </html> |
OLD | NEW |