MediaWiki:Common.js: различия между версиями
Pok (обсуждение | вклад) Нет описания правки |
Pok (обсуждение | вклад) Нет описания правки |
||
| Строка 629: | Строка 629: | ||
// Для "Шаблон:Ajax" | // Для "Шаблон:Ajax" | ||
function initAjaxLoader() { | function initAjaxLoader() { | ||
var | var ajaxContainers = document.querySelectorAll('.ajax-load, .ajax-load-link'); | ||
var BATCH_SIZE = 1000; | var BATCH_SIZE = 1000; | ||
var queue = []; | var queue = []; | ||
| Строка 647: | Строка 646: | ||
var newContainer = document.createElement("span"); | var newContainer = document.createElement("span"); | ||
newContainer.innerHTML = parsedHTML; | newContainer.innerHTML = parsedHTML; | ||
if (placeholder && placeholder.parentNode) { | if (placeholder && placeholder.parentNode) { | ||
placeholder.replaceWith(newContainer); | placeholder.replaceWith(newContainer); | ||
| Строка 663: | Строка 663: | ||
try { | try { | ||
$.globalEval(scr.textContent || scr.innerText || ""); | $.globalEval(scr.textContent || scr.innerText || ""); | ||
} catch (e) {} | } catch (e) { /* ignore errors in inline scripts */ } | ||
parent.removeChild(scr); | parent.removeChild(scr); | ||
} | } | ||
| Строка 715: | Строка 715: | ||
} | } | ||
var | ajaxContainers.forEach(function (container) { | ||
var contentEl = container.querySelector('.ajax-load-content'); | |||
var loadingEl = container.querySelector('.ajax-load-loading'); | |||
if (!contentEl) return; | |||
var wikiText = (contentEl.textContent || contentEl.innerText || "").trim(); | |||
if (!wikiText) return; | |||
var loadingText = (loadingEl && (loadingEl.textContent || loadingEl.innerText || "").trim()) || "Загрузка..."; | |||
if (container.classList.contains('ajax-load-link')) { | |||
container.addEventListener('click', function (ev) { | |||
ev.preventDefault && ev.preventDefault(); | |||
if (container.dataset.ajaxLoaded === "1") return; | |||
container.dataset.ajaxLoaded = "1"; | |||
var placeholder = document.createElement("span"); | |||
placeholder.className = "ajax-load-placeholder"; | |||
placeholder.textContent = loadingText; | |||
if (loadingEl && loadingEl.parentNode) { | |||
loadingEl.replaceWith(placeholder); | |||
} else { | |||
container.replaceWith(placeholder); | |||
} | |||
queue.push({ wikiText: wikiText, placeholder: placeholder }); | |||
processQueue(); | |||
}, { once: true }); | |||
} else { | |||
var placeholder = document.createElement("span"); | var placeholder = document.createElement("span"); | ||
placeholder. | placeholder.className = "ajax-load-placeholder"; | ||
placeholder.textContent = loadingText; | |||
contentEl.replaceWith(placeholder); | |||
queue.push({ wikiText: wikiText, placeholder: placeholder }); | queue.push({ wikiText: wikiText, placeholder: placeholder }); | ||
} | |||
} | |||
}); | }); | ||