MediaWiki:Common.js
Материал из Много троп
Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
- Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
- Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
- Opera: Нажмите Ctrl+F5.
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */
$(function () {
$('.hidden-iframe-container').each(function () {
const container = this;
const iframe = container.querySelector('.hidden-iframe');
if (!iframe) {
return;
}
let loaded = false;
// Считаем iframe загруженным после события load
iframe.addEventListener('load', function () {
loaded = true;
// Небольшая задержка перед отображением
setTimeout(function () {
container.style.display = '';
}, 3000); // 3000 мс = 3 секунды
});
// Если iframe не загрузился за 5 секунд, оставляем его скрытым
setTimeout(function () {
if (!loaded) {
container.remove();
// Или вместо удаления:
// container.style.display = 'none';
}
}, 5000);
});
});
document.getElementById('download-gpx').addEventListener('click', function() {
const data = JSON.parse(document.getElementById('route-data').textContent);
const gpx = geoJsonToGpx(data);
const blob = new Blob([gpx], {type: 'application/gpx+xml'});
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'route.gpx';
a.click();
});
function geoJsonToGpx(geojson) {
let gpx = '<?xml version="1.0" encoding="UTF-8"?>\n';
gpx += '<gpx version="1.1" creator="MediaWiki">\n';
geojson.features.forEach(feature => {
if (feature.geometry.type === 'LineString') {
gpx += ' <trk>\n';
gpx += ` <name>${feature.properties.title || 'Track'}</name>\n`;
gpx += ' <trkseg>\n';
feature.geometry.coordinates.forEach(([lon, lat]) => {
gpx += ` <trkpt lat="${lat}" lon="${lon}" />\n`;
});
gpx += ' </trkseg>\n';
gpx += ' </trk>\n';
}
});
gpx += '</gpx>';
return gpx;
}