mirror of
https://github.com/migatu/astrololo.git
synced 2026-07-14 21:38:37 +00:00
4a86d34f5a
Przyczyna "nie pyta o zgodę": navigator.geolocation działa tylko w secure
context (https:// lub localhost). Na http://<ip> przeglądarka po cichu
odmawia — bez promptu; kod nie miał callbacku błędu, więc nic nie było widać.
- wspólny static/now.js (deduplikacja skryptu z chart.html i interpret.html)
- jawna detekcja window.isSecureContext + czytelny komunikat w #geoNote
("wymaga HTTPS lub localhost — wpisz lat/lon ręcznie")
- callback błędu (odmowa/timeout) też widoczny; status "Pobieram lokalizację…"
i potwierdzenie po sukcesie
Zweryfikowano: /static/now.js serwowany (200), obie strony referencjonują
skrypt i mają #geoNote.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
44 lines
1.8 KiB
JavaScript
44 lines
1.8 KiB
JavaScript
// „Tu i teraz": uzupełnia datę/godzinę/strefę z przeglądarki oraz — jeśli to
|
|
// możliwe — lokalizację (lat/lon).
|
|
//
|
|
// UWAGA: geolokalizacja przeglądarki działa tylko w "secure context"
|
|
// (https:// lub localhost). Na http://<ip> przeglądarka NIE pyta o zgodę,
|
|
// tylko po cichu odmawia — dlatego pokazujemy jawny komunikat w #geoNote.
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
const btn = document.getElementById('nowBtn');
|
|
if (!btn) return;
|
|
|
|
const note = document.getElementById('geoNote');
|
|
const say = msg => { if (note) note.textContent = msg; };
|
|
|
|
btn.addEventListener('click', function () {
|
|
const d = new Date();
|
|
const pad = n => String(n).padStart(2, '0');
|
|
document.querySelector('input[name=date]').value =
|
|
d.getFullYear() + '-' + pad(d.getMonth() + 1) + '-' + pad(d.getDate());
|
|
document.querySelector('input[name=time]').value = pad(d.getHours()) + ':' + pad(d.getMinutes());
|
|
document.querySelector('input[name=tz_offset]').value = (-d.getTimezoneOffset() / 60);
|
|
|
|
if (!('geolocation' in navigator)) {
|
|
say('Ta przeglądarka nie udostępnia geolokalizacji — wpisz lat/lon ręcznie.');
|
|
return;
|
|
}
|
|
if (!window.isSecureContext) {
|
|
say('Lokalizacja z przeglądarki wymaga HTTPS lub localhost (otwarto przez http://) — wpisz lat/lon ręcznie.');
|
|
return;
|
|
}
|
|
say('Pobieram lokalizację…');
|
|
navigator.geolocation.getCurrentPosition(
|
|
function (pos) {
|
|
document.querySelector('input[name=lat]').value = pos.coords.latitude.toFixed(4);
|
|
document.querySelector('input[name=lon]').value = pos.coords.longitude.toFixed(4);
|
|
say('Lokalizacja pobrana ✓');
|
|
},
|
|
function (err) {
|
|
say('Nie udało się pobrać lokalizacji: ' + (err && err.message ? err.message : 'odmowa dostępu'));
|
|
},
|
|
{ timeout: 8000 }
|
|
);
|
|
});
|
|
});
|