1/** 2 * Dostepnosc: nazwy ramek (iframe) dla czytnikow ekranu (WCAG 4.1.2) oraz 3 * pasek dostepnosci (prawa krawedz ekranu): powiekszenie / pomniejszenie tekstu, wysoki kontrast, 4 * podkreslenie linkow, powrot do domyslnego wygladu. 5 * 6 * Ustawienia sa zapisywane w przegladarce odwiedzajacego (localStorage, klucz "bskw-dostepnosc"), 7 * a skrypt w <head> (index.php) stosuje je przed wyswietleniem kolejnej strony. 8 * Wyglad i dzialanie trybow: css/style.css (sekcja "Pasek dostepnosci"). 9 */ 10(function () { 11 'use strict'; 12 13 var KLUCZ = 'bskw-dostepnosc'; 14 var MAKS_TEKST = 2; // 0 = normalny, 1 = +15%, 2 = +30% 15 16 function wczytaj() { 17 try { 18 return JSON.parse(window.localStorage.getItem(KLUCZ) || '{}') || {}; 19 } catch (e) { 20 return {}; 21 } 22 } 23 24 function zapisz(ustawienia) { 25 try { 26 window.localStorage.setItem(KLUCZ, JSON.stringify(ustawienia)); 27 } catch (e) { 28 // brak dostepu do localStorage â ustawienie dziala tylko na tej stronie 29 } 30 } 31 32 /* 33 * WCAG 4.1.2: kazda ramka (iframe) musi miec nazwe â czytnik ekranu odczytuje ja przed wejsciem do ramki. 34 * Ramki wklejane w tresc artykulow (kalkulatory BSI, mapy Google, filmy) czesto nie maja "title", 35 * wiec uzupelniamy go tutaj na podstawie adresu. 36 */ 37 function nazwijRamki() { 38 document.querySelectorAll('iframe:not([title])').forEach(function (ramka) { 39 var adres = ramka.getAttribute('src') || ''; 40 var nazwa = 'TreÅÄ osadzona'; 41 42 if (adres.indexOf('bsi.gs-net.pl') !== -1) { 43 nazwa = 'Kalkulator kredytowy'; 44 } else if (adres.indexOf('google.') !== -1 && adres.indexOf('map') !== -1) { 45 nazwa = 'Mapa Google â dojazd do banku'; 46 } else if (adres.indexOf('youtube') !== -1) { 47 nazwa = 'Film YouTube'; 48 } else if (adres.indexOf('facebook') !== -1) { 49 nazwa = 'Facebook Banku SpóÅdzielczego w KÄ tach WrocÅawskich'; 50 } 51 52 ramka.setAttribute('title', nazwa); 53 }); 54 } 55 56 document.addEventListener('DOMContentLoaded', function () { 57 nazwijRamki(); 58 59 var pasek = document.getElementById('dost-pasek'); 60 61 if (!pasek) { 62 return; 63 } 64 65 var h = document.documentElement; 66 var u = wczytaj(); 67 u.tekst = parseInt(u.tekst, 10) || 0; 68 69 function zastosuj() { 70 if (u.tekst > 0) { 71 h.setAttribute('data-dost-tekst', u.tekst); 72 } else { 73 h.removeAttribute('data-dost-tekst'); 74 } 75 h.classList.toggle('dost-kontrast', !!u.kontrast); 76 h.classList.toggle('dost-linki', !!u.linki); 77 78 pasek.querySelector('[data-dost="kontrast"]').setAttribute('aria-pressed', u.kontrast ? 'true' : 'false'); 79 pasek.querySelector('[data-dost="linki"]').setAttribute('aria-pressed', u.linki ? 'true' : 'false'); 80 pasek.querySelector('[data-dost="wiecej"]').disabled = u.tekst >= MAKS_TEKST; 81 pasek.querySelector('[data-dost="mniej"]').disabled = u.tekst <= 0; 82 83 zapisz(u); 84 } 85 86 pasek.querySelectorAll('[data-dost]').forEach(function (przycisk) { 87 przycisk.addEventListener('click', function () { 88 switch (przycisk.getAttribute('data-dost')) { 89 case 'wiecej': 90 u.tekst = Math.min(MAKS_TEKST, u.tekst + 1); 91 break; 92 case 'mniej': 93 u.tekst = Math.max(0, u.tekst - 1); 94 break; 95 case 'kontrast': 96 u.kontrast = !u.kontrast; 97 break; 98 case 'linki': 99 u.linki = !u.linki; 100 break; 101 case 'reset': 102 u = { tekst: 0 }; 103 break; 104 } 105 zastosuj(); 106 }); 107 }); 108 109 // telefon: pasek zwiniety do jednego przycisku 110 var przelacz = pasek.querySelector('.dost-pasek__przelacz'); 111 przelacz.addEventListener('click', function () { 112 var otwarty = pasek.classList.toggle('dost-pasek--otwarty'); 113 przelacz.setAttribute('aria-expanded', otwarty ? 'true' : 'false'); 114 }); 115 116 zastosuj(); 117 }); 118})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.