]> git.openstreetmap.org Git - nominatim-ui.git/blob - src/main.js
link.href is always absolute URL, inspect raw HTML attribute instead (#60)
[nominatim-ui.git] / src / main.js
1 import App from './App.svelte';
2 import { refresh_page } from './lib/stores.js';
3
4 let myhistory = [];
5
6 const app = new App({ // eslint-disable-line no-unused-vars
7   target: document.body
8 });
9
10
11 function is_relative_url(url) {
12   if (!url) return false;
13   if (url.indexOf('?') === 0) return true;
14   if (url.indexOf('/') === 0) return true;
15   if (url.indexOf('#') === 0) return false;
16   if (url.match(/^http/)) return false;
17   if (!url.match(/\.html/)) return true;
18
19   return false;
20 }
21
22
23 // load page after click on relative URL
24 document.addEventListener('click', function (e) {
25
26   // loop parent nodes from the target to the delegation node
27   for (var target = e.target; target && target !== this; target = target.parentNode) {
28
29     if (target.matches('a') && target.href) {
30       // target.href always contains the full absolute URL, inspect the raw value instead
31       var target_url = target.attributes.href.value;
32
33       if (!is_relative_url(target_url)) return;
34
35       e.preventDefault();
36       e.stopPropagation();
37
38       window.history.pushState(myhistory, '', target_url);
39
40       refresh_page();
41       break;
42     }
43   }
44 });