update
All checks were successful
Deploy Static Site / deploy (push) Successful in 13m14s

This commit is contained in:
2025-05-28 09:38:46 +04:00
parent 7b63558dc6
commit 0449f954d8
6 changed files with 576 additions and 60 deletions

View File

@ -495,7 +495,7 @@ $(document).ready(function () {
// prepareContent(); // prepareContent();
// }); // });
// }); // });
console.log("тюк");
function onUrlChange(callback) { function onUrlChange(callback) {
const originalPushState = history.pushState; const originalPushState = history.pushState;
const originalReplaceState = history.replaceState; const originalReplaceState = history.replaceState;
@ -625,11 +625,77 @@ $(document).ready(function () {
prepareContent(); prepareContent();
}); });
} else { } else {
// const _target = evt.target;
// const _targetUl = _target.parentElement.nextElementSibling;
// if (
// _target.nodeName === "SPAN" &&
// _targetUl.nodeName === "UL" &&
// _targetUl.classList.contains("hide-side-menu-item")
// ) {
// _targetUl.querySelectorAll("a")[0].click();
// } else {
// const _ul =
// _target.parentElement.querySelectorAll("a")[0]
// .nextElementSibling;
// if (_ul.nodeName === "UL") {
// _ul.querySelectorAll("a")[0].click();
// }
// }
//is fake
// function isFakeLink(link) {
// if (!link) return false;
// const href = link.getAttribute("href");
// return href === "#" || href === "javascript:void(0);";
// }
// function isRealLink(link) {
// return !!link && !isFakeLink(link);
// }
// function findFirstLinkInElement(element) {
// if (!element) return null;
// return element.querySelector("a");
// }
// function findFirstRealNestedLink(element) {
// if (!element) return null;
// const links = element.querySelectorAll("a");
// for (const link of links) {
// if (isRealLink(link)) return link;
// }
// return null;
// }
// document.addEventListener("click", (evt) => {
// const _target = evt.target;
// if (_target.nodeName !== "SPAN") return;
// const _targetLi = _target.closest("li");
// if (!_targetLi) return;
// const submenu = _targetLi.querySelector("ul");
// const firstLink = findFirstLinkInElement(_targetLi);
// // заглушки
// if (firstLink && isFakeLink(firstLink)) {
// const nestedReal = findFirstRealNestedLink(submenu);
// if (nestedReal) {
// nestedReal.click();
// // в первом фрагменте, после nestedReal.click();
// setTimeout(() => {
// document.dispatchEvent(new Event("subcategory:update"));
// }, 50);
// }
// }
// // Поведение для настоящих ссылок
// else if (firstLink && isRealLink(firstLink)) {
// firstLink.click(); // кликаем по нормальной ссылке
// }
// });
//TEST //TEST
//TODO левый ток
function isFakeLink(link) { function isFakeLink(link) {
if (!link) return false; if (!link) return false;
const href = link.getAttribute("href"); const href = link.getAttribute("href");
return href === "#" || href === "javascript:void(0);"; return (
href === "#" ||
href === "javascript:void(0)" ||
href === "javascript:void(0);"
);
} }
function isRealLink(link) { function isRealLink(link) {
@ -652,7 +718,8 @@ $(document).ready(function () {
document.addEventListener("click", (evt) => { document.addEventListener("click", (evt) => {
const _target = evt.target; const _target = evt.target;
if (_target.nodeName !== "SPAN") return; // Расширяем обработку кликов для разных элементов
if (!_target.matches("span, a, li")) return;
const _targetLi = _target.closest("li"); const _targetLi = _target.closest("li");
if (!_targetLi) return; if (!_targetLi) return;
@ -660,24 +727,43 @@ $(document).ready(function () {
const submenu = _targetLi.querySelector("ul"); const submenu = _targetLi.querySelector("ul");
const firstLink = findFirstLinkInElement(_targetLi); const firstLink = findFirstLinkInElement(_targetLi);
// заглушки // Обработка фейковых ссылок
if (firstLink && isFakeLink(firstLink)) { if (firstLink && isFakeLink(firstLink)) {
evt.preventDefault(); // Добавляем preventDefault
const nestedReal = findFirstRealNestedLink(submenu); const nestedReal = findFirstRealNestedLink(submenu);
if (nestedReal) { if (nestedReal) {
// Добавляем проверку перед кликом
if (
nestedReal.href &&
!nestedReal.href.includes("javascript:")
) {
nestedReal.click(); nestedReal.click();
// в первом фрагменте, после nestedReal.click(); }
setTimeout(() => { setTimeout(() => {
document.dispatchEvent(new Event("subcategory:update")); document.dispatchEvent(new Event("subcategory:update"));
}, 50); }, 50);
} }
return;
} }
// Поведение для настоящих ссылок // Обработка реальных ссылок
else if (firstLink && isRealLink(firstLink)) { if (firstLink && isRealLink(firstLink)) {
firstLink.click(); // кликаем по нормальной ссылке // Добавляем обработку для якорных ссылок
if (firstLink.hash) {
evt.preventDefault();
const targetElement = document.querySelector(firstLink.hash);
if (targetElement) {
targetElement.scrollIntoView({ behavior: "smooth" });
}
return;
}
// Оставляем стандартное поведение для обычных ссылок
return;
} }
}); });
//TEST
} }
} }
}); });

View File

@ -495,7 +495,7 @@ $(document).ready(function () {
// prepareContent(); // prepareContent();
// }); // });
// }); // });
console.log("тюк");
function onUrlChange(callback) { function onUrlChange(callback) {
const originalPushState = history.pushState; const originalPushState = history.pushState;
const originalReplaceState = history.replaceState; const originalReplaceState = history.replaceState;
@ -625,11 +625,77 @@ $(document).ready(function () {
prepareContent(); prepareContent();
}); });
} else { } else {
// const _target = evt.target;
// const _targetUl = _target.parentElement.nextElementSibling;
// if (
// _target.nodeName === "SPAN" &&
// _targetUl.nodeName === "UL" &&
// _targetUl.classList.contains("hide-side-menu-item")
// ) {
// _targetUl.querySelectorAll("a")[0].click();
// } else {
// const _ul =
// _target.parentElement.querySelectorAll("a")[0]
// .nextElementSibling;
// if (_ul.nodeName === "UL") {
// _ul.querySelectorAll("a")[0].click();
// }
// }
//is fake
// function isFakeLink(link) {
// if (!link) return false;
// const href = link.getAttribute("href");
// return href === "#" || href === "javascript:void(0);";
// }
// function isRealLink(link) {
// return !!link && !isFakeLink(link);
// }
// function findFirstLinkInElement(element) {
// if (!element) return null;
// return element.querySelector("a");
// }
// function findFirstRealNestedLink(element) {
// if (!element) return null;
// const links = element.querySelectorAll("a");
// for (const link of links) {
// if (isRealLink(link)) return link;
// }
// return null;
// }
// document.addEventListener("click", (evt) => {
// const _target = evt.target;
// if (_target.nodeName !== "SPAN") return;
// const _targetLi = _target.closest("li");
// if (!_targetLi) return;
// const submenu = _targetLi.querySelector("ul");
// const firstLink = findFirstLinkInElement(_targetLi);
// // заглушки
// if (firstLink && isFakeLink(firstLink)) {
// const nestedReal = findFirstRealNestedLink(submenu);
// if (nestedReal) {
// nestedReal.click();
// // в первом фрагменте, после nestedReal.click();
// setTimeout(() => {
// document.dispatchEvent(new Event("subcategory:update"));
// }, 50);
// }
// }
// // Поведение для настоящих ссылок
// else if (firstLink && isRealLink(firstLink)) {
// firstLink.click(); // кликаем по нормальной ссылке
// }
// });
//TEST //TEST
//TODO левый ток
function isFakeLink(link) { function isFakeLink(link) {
if (!link) return false; if (!link) return false;
const href = link.getAttribute("href"); const href = link.getAttribute("href");
return href === "#" || href === "javascript:void(0);"; return (
href === "#" ||
href === "javascript:void(0)" ||
href === "javascript:void(0);"
);
} }
function isRealLink(link) { function isRealLink(link) {
@ -652,7 +718,8 @@ $(document).ready(function () {
document.addEventListener("click", (evt) => { document.addEventListener("click", (evt) => {
const _target = evt.target; const _target = evt.target;
if (_target.nodeName !== "SPAN") return; // Расширяем обработку кликов для разных элементов
if (!_target.matches("span, a, li")) return;
const _targetLi = _target.closest("li"); const _targetLi = _target.closest("li");
if (!_targetLi) return; if (!_targetLi) return;
@ -660,24 +727,43 @@ $(document).ready(function () {
const submenu = _targetLi.querySelector("ul"); const submenu = _targetLi.querySelector("ul");
const firstLink = findFirstLinkInElement(_targetLi); const firstLink = findFirstLinkInElement(_targetLi);
// заглушки // Обработка фейковых ссылок
if (firstLink && isFakeLink(firstLink)) { if (firstLink && isFakeLink(firstLink)) {
evt.preventDefault(); // Добавляем preventDefault
const nestedReal = findFirstRealNestedLink(submenu); const nestedReal = findFirstRealNestedLink(submenu);
if (nestedReal) { if (nestedReal) {
// Добавляем проверку перед кликом
if (
nestedReal.href &&
!nestedReal.href.includes("javascript:")
) {
nestedReal.click(); nestedReal.click();
// в первом фрагменте, после nestedReal.click(); }
setTimeout(() => { setTimeout(() => {
document.dispatchEvent(new Event("subcategory:update")); document.dispatchEvent(new Event("subcategory:update"));
}, 50); }, 50);
} }
return;
} }
// Поведение для настоящих ссылок // Обработка реальных ссылок
else if (firstLink && isRealLink(firstLink)) { if (firstLink && isRealLink(firstLink)) {
firstLink.click(); // кликаем по нормальной ссылке // Добавляем обработку для якорных ссылок
if (firstLink.hash) {
evt.preventDefault();
const targetElement = document.querySelector(firstLink.hash);
if (targetElement) {
targetElement.scrollIntoView({ behavior: "smooth" });
}
return;
}
// Оставляем стандартное поведение для обычных ссылок
return;
} }
}); });
//TEST
} }
} }
}); });

View File

@ -495,7 +495,7 @@ $(document).ready(function () {
// prepareContent(); // prepareContent();
// }); // });
// }); // });
console.log("тюк");
function onUrlChange(callback) { function onUrlChange(callback) {
const originalPushState = history.pushState; const originalPushState = history.pushState;
const originalReplaceState = history.replaceState; const originalReplaceState = history.replaceState;
@ -625,11 +625,77 @@ $(document).ready(function () {
prepareContent(); prepareContent();
}); });
} else { } else {
// const _target = evt.target;
// const _targetUl = _target.parentElement.nextElementSibling;
// if (
// _target.nodeName === "SPAN" &&
// _targetUl.nodeName === "UL" &&
// _targetUl.classList.contains("hide-side-menu-item")
// ) {
// _targetUl.querySelectorAll("a")[0].click();
// } else {
// const _ul =
// _target.parentElement.querySelectorAll("a")[0]
// .nextElementSibling;
// if (_ul.nodeName === "UL") {
// _ul.querySelectorAll("a")[0].click();
// }
// }
//is fake
// function isFakeLink(link) {
// if (!link) return false;
// const href = link.getAttribute("href");
// return href === "#" || href === "javascript:void(0);";
// }
// function isRealLink(link) {
// return !!link && !isFakeLink(link);
// }
// function findFirstLinkInElement(element) {
// if (!element) return null;
// return element.querySelector("a");
// }
// function findFirstRealNestedLink(element) {
// if (!element) return null;
// const links = element.querySelectorAll("a");
// for (const link of links) {
// if (isRealLink(link)) return link;
// }
// return null;
// }
// document.addEventListener("click", (evt) => {
// const _target = evt.target;
// if (_target.nodeName !== "SPAN") return;
// const _targetLi = _target.closest("li");
// if (!_targetLi) return;
// const submenu = _targetLi.querySelector("ul");
// const firstLink = findFirstLinkInElement(_targetLi);
// // заглушки
// if (firstLink && isFakeLink(firstLink)) {
// const nestedReal = findFirstRealNestedLink(submenu);
// if (nestedReal) {
// nestedReal.click();
// // в первом фрагменте, после nestedReal.click();
// setTimeout(() => {
// document.dispatchEvent(new Event("subcategory:update"));
// }, 50);
// }
// }
// // Поведение для настоящих ссылок
// else if (firstLink && isRealLink(firstLink)) {
// firstLink.click(); // кликаем по нормальной ссылке
// }
// });
//TEST //TEST
//TODO левый ток
function isFakeLink(link) { function isFakeLink(link) {
if (!link) return false; if (!link) return false;
const href = link.getAttribute("href"); const href = link.getAttribute("href");
return href === "#" || href === "javascript:void(0);"; return (
href === "#" ||
href === "javascript:void(0)" ||
href === "javascript:void(0);"
);
} }
function isRealLink(link) { function isRealLink(link) {
@ -652,7 +718,8 @@ $(document).ready(function () {
document.addEventListener("click", (evt) => { document.addEventListener("click", (evt) => {
const _target = evt.target; const _target = evt.target;
if (_target.nodeName !== "SPAN") return; // Расширяем обработку кликов для разных элементов
if (!_target.matches("span, a, li")) return;
const _targetLi = _target.closest("li"); const _targetLi = _target.closest("li");
if (!_targetLi) return; if (!_targetLi) return;
@ -660,24 +727,43 @@ $(document).ready(function () {
const submenu = _targetLi.querySelector("ul"); const submenu = _targetLi.querySelector("ul");
const firstLink = findFirstLinkInElement(_targetLi); const firstLink = findFirstLinkInElement(_targetLi);
// заглушки // Обработка фейковых ссылок
if (firstLink && isFakeLink(firstLink)) { if (firstLink && isFakeLink(firstLink)) {
evt.preventDefault(); // Добавляем preventDefault
const nestedReal = findFirstRealNestedLink(submenu); const nestedReal = findFirstRealNestedLink(submenu);
if (nestedReal) { if (nestedReal) {
// Добавляем проверку перед кликом
if (
nestedReal.href &&
!nestedReal.href.includes("javascript:")
) {
nestedReal.click(); nestedReal.click();
// в первом фрагменте, после nestedReal.click(); }
setTimeout(() => { setTimeout(() => {
document.dispatchEvent(new Event("subcategory:update")); document.dispatchEvent(new Event("subcategory:update"));
}, 50); }, 50);
} }
return;
} }
// Поведение для настоящих ссылок // Обработка реальных ссылок
else if (firstLink && isRealLink(firstLink)) { if (firstLink && isRealLink(firstLink)) {
firstLink.click(); // кликаем по нормальной ссылке // Добавляем обработку для якорных ссылок
if (firstLink.hash) {
evt.preventDefault();
const targetElement = document.querySelector(firstLink.hash);
if (targetElement) {
targetElement.scrollIntoView({ behavior: "smooth" });
}
return;
}
// Оставляем стандартное поведение для обычных ссылок
return;
} }
}); });
//TEST
} }
} }
}); });

View File

@ -495,7 +495,7 @@ $(document).ready(function () {
// prepareContent(); // prepareContent();
// }); // });
// }); // });
console.log("тюк");
function onUrlChange(callback) { function onUrlChange(callback) {
const originalPushState = history.pushState; const originalPushState = history.pushState;
const originalReplaceState = history.replaceState; const originalReplaceState = history.replaceState;
@ -625,11 +625,77 @@ $(document).ready(function () {
prepareContent(); prepareContent();
}); });
} else { } else {
// const _target = evt.target;
// const _targetUl = _target.parentElement.nextElementSibling;
// if (
// _target.nodeName === "SPAN" &&
// _targetUl.nodeName === "UL" &&
// _targetUl.classList.contains("hide-side-menu-item")
// ) {
// _targetUl.querySelectorAll("a")[0].click();
// } else {
// const _ul =
// _target.parentElement.querySelectorAll("a")[0]
// .nextElementSibling;
// if (_ul.nodeName === "UL") {
// _ul.querySelectorAll("a")[0].click();
// }
// }
//is fake
// function isFakeLink(link) {
// if (!link) return false;
// const href = link.getAttribute("href");
// return href === "#" || href === "javascript:void(0);";
// }
// function isRealLink(link) {
// return !!link && !isFakeLink(link);
// }
// function findFirstLinkInElement(element) {
// if (!element) return null;
// return element.querySelector("a");
// }
// function findFirstRealNestedLink(element) {
// if (!element) return null;
// const links = element.querySelectorAll("a");
// for (const link of links) {
// if (isRealLink(link)) return link;
// }
// return null;
// }
// document.addEventListener("click", (evt) => {
// const _target = evt.target;
// if (_target.nodeName !== "SPAN") return;
// const _targetLi = _target.closest("li");
// if (!_targetLi) return;
// const submenu = _targetLi.querySelector("ul");
// const firstLink = findFirstLinkInElement(_targetLi);
// // заглушки
// if (firstLink && isFakeLink(firstLink)) {
// const nestedReal = findFirstRealNestedLink(submenu);
// if (nestedReal) {
// nestedReal.click();
// // в первом фрагменте, после nestedReal.click();
// setTimeout(() => {
// document.dispatchEvent(new Event("subcategory:update"));
// }, 50);
// }
// }
// // Поведение для настоящих ссылок
// else if (firstLink && isRealLink(firstLink)) {
// firstLink.click(); // кликаем по нормальной ссылке
// }
// });
//TEST //TEST
//TODO левый ток
function isFakeLink(link) { function isFakeLink(link) {
if (!link) return false; if (!link) return false;
const href = link.getAttribute("href"); const href = link.getAttribute("href");
return href === "#" || href === "javascript:void(0);"; return (
href === "#" ||
href === "javascript:void(0)" ||
href === "javascript:void(0);"
);
} }
function isRealLink(link) { function isRealLink(link) {
@ -652,7 +718,8 @@ $(document).ready(function () {
document.addEventListener("click", (evt) => { document.addEventListener("click", (evt) => {
const _target = evt.target; const _target = evt.target;
if (_target.nodeName !== "SPAN") return; // Расширяем обработку кликов для разных элементов
if (!_target.matches("span, a, li")) return;
const _targetLi = _target.closest("li"); const _targetLi = _target.closest("li");
if (!_targetLi) return; if (!_targetLi) return;
@ -660,24 +727,43 @@ $(document).ready(function () {
const submenu = _targetLi.querySelector("ul"); const submenu = _targetLi.querySelector("ul");
const firstLink = findFirstLinkInElement(_targetLi); const firstLink = findFirstLinkInElement(_targetLi);
// заглушки // Обработка фейковых ссылок
if (firstLink && isFakeLink(firstLink)) { if (firstLink && isFakeLink(firstLink)) {
evt.preventDefault(); // Добавляем preventDefault
const nestedReal = findFirstRealNestedLink(submenu); const nestedReal = findFirstRealNestedLink(submenu);
if (nestedReal) { if (nestedReal) {
// Добавляем проверку перед кликом
if (
nestedReal.href &&
!nestedReal.href.includes("javascript:")
) {
nestedReal.click(); nestedReal.click();
// в первом фрагменте, после nestedReal.click(); }
setTimeout(() => { setTimeout(() => {
document.dispatchEvent(new Event("subcategory:update")); document.dispatchEvent(new Event("subcategory:update"));
}, 50); }, 50);
} }
return;
} }
// Поведение для настоящих ссылок // Обработка реальных ссылок
else if (firstLink && isRealLink(firstLink)) { if (firstLink && isRealLink(firstLink)) {
firstLink.click(); // кликаем по нормальной ссылке // Добавляем обработку для якорных ссылок
if (firstLink.hash) {
evt.preventDefault();
const targetElement = document.querySelector(firstLink.hash);
if (targetElement) {
targetElement.scrollIntoView({ behavior: "smooth" });
}
return;
}
// Оставляем стандартное поведение для обычных ссылок
return;
} }
}); });
//TEST
} }
} }
}); });

View File

@ -495,7 +495,7 @@ $(document).ready(function () {
// prepareContent(); // prepareContent();
// }); // });
// }); // });
console.log("тюк");
function onUrlChange(callback) { function onUrlChange(callback) {
const originalPushState = history.pushState; const originalPushState = history.pushState;
const originalReplaceState = history.replaceState; const originalReplaceState = history.replaceState;
@ -625,11 +625,77 @@ $(document).ready(function () {
prepareContent(); prepareContent();
}); });
} else { } else {
// const _target = evt.target;
// const _targetUl = _target.parentElement.nextElementSibling;
// if (
// _target.nodeName === "SPAN" &&
// _targetUl.nodeName === "UL" &&
// _targetUl.classList.contains("hide-side-menu-item")
// ) {
// _targetUl.querySelectorAll("a")[0].click();
// } else {
// const _ul =
// _target.parentElement.querySelectorAll("a")[0]
// .nextElementSibling;
// if (_ul.nodeName === "UL") {
// _ul.querySelectorAll("a")[0].click();
// }
// }
//is fake
// function isFakeLink(link) {
// if (!link) return false;
// const href = link.getAttribute("href");
// return href === "#" || href === "javascript:void(0);";
// }
// function isRealLink(link) {
// return !!link && !isFakeLink(link);
// }
// function findFirstLinkInElement(element) {
// if (!element) return null;
// return element.querySelector("a");
// }
// function findFirstRealNestedLink(element) {
// if (!element) return null;
// const links = element.querySelectorAll("a");
// for (const link of links) {
// if (isRealLink(link)) return link;
// }
// return null;
// }
// document.addEventListener("click", (evt) => {
// const _target = evt.target;
// if (_target.nodeName !== "SPAN") return;
// const _targetLi = _target.closest("li");
// if (!_targetLi) return;
// const submenu = _targetLi.querySelector("ul");
// const firstLink = findFirstLinkInElement(_targetLi);
// // заглушки
// if (firstLink && isFakeLink(firstLink)) {
// const nestedReal = findFirstRealNestedLink(submenu);
// if (nestedReal) {
// nestedReal.click();
// // в первом фрагменте, после nestedReal.click();
// setTimeout(() => {
// document.dispatchEvent(new Event("subcategory:update"));
// }, 50);
// }
// }
// // Поведение для настоящих ссылок
// else if (firstLink && isRealLink(firstLink)) {
// firstLink.click(); // кликаем по нормальной ссылке
// }
// });
//TEST //TEST
//TODO левый ток
function isFakeLink(link) { function isFakeLink(link) {
if (!link) return false; if (!link) return false;
const href = link.getAttribute("href"); const href = link.getAttribute("href");
return href === "#" || href === "javascript:void(0);"; return (
href === "#" ||
href === "javascript:void(0)" ||
href === "javascript:void(0);"
);
} }
function isRealLink(link) { function isRealLink(link) {
@ -652,7 +718,8 @@ $(document).ready(function () {
document.addEventListener("click", (evt) => { document.addEventListener("click", (evt) => {
const _target = evt.target; const _target = evt.target;
if (_target.nodeName !== "SPAN") return; // Расширяем обработку кликов для разных элементов
if (!_target.matches("span, a, li")) return;
const _targetLi = _target.closest("li"); const _targetLi = _target.closest("li");
if (!_targetLi) return; if (!_targetLi) return;
@ -660,24 +727,43 @@ $(document).ready(function () {
const submenu = _targetLi.querySelector("ul"); const submenu = _targetLi.querySelector("ul");
const firstLink = findFirstLinkInElement(_targetLi); const firstLink = findFirstLinkInElement(_targetLi);
// заглушки // Обработка фейковых ссылок
if (firstLink && isFakeLink(firstLink)) { if (firstLink && isFakeLink(firstLink)) {
evt.preventDefault(); // Добавляем preventDefault
const nestedReal = findFirstRealNestedLink(submenu); const nestedReal = findFirstRealNestedLink(submenu);
if (nestedReal) { if (nestedReal) {
// Добавляем проверку перед кликом
if (
nestedReal.href &&
!nestedReal.href.includes("javascript:")
) {
nestedReal.click(); nestedReal.click();
// в первом фрагменте, после nestedReal.click(); }
setTimeout(() => { setTimeout(() => {
document.dispatchEvent(new Event("subcategory:update")); document.dispatchEvent(new Event("subcategory:update"));
}, 50); }, 50);
} }
return;
} }
// Поведение для настоящих ссылок // Обработка реальных ссылок
else if (firstLink && isRealLink(firstLink)) { if (firstLink && isRealLink(firstLink)) {
firstLink.click(); // кликаем по нормальной ссылке // Добавляем обработку для якорных ссылок
if (firstLink.hash) {
evt.preventDefault();
const targetElement = document.querySelector(firstLink.hash);
if (targetElement) {
targetElement.scrollIntoView({ behavior: "smooth" });
}
return;
}
// Оставляем стандартное поведение для обычных ссылок
return;
} }
}); });
//TEST
} }
} }
}); });

View File

@ -495,7 +495,7 @@ $(document).ready(function () {
// prepareContent(); // prepareContent();
// }); // });
// }); // });
console.log("тюк");
function onUrlChange(callback) { function onUrlChange(callback) {
const originalPushState = history.pushState; const originalPushState = history.pushState;
const originalReplaceState = history.replaceState; const originalReplaceState = history.replaceState;
@ -625,11 +625,77 @@ $(document).ready(function () {
prepareContent(); prepareContent();
}); });
} else { } else {
// const _target = evt.target;
// const _targetUl = _target.parentElement.nextElementSibling;
// if (
// _target.nodeName === "SPAN" &&
// _targetUl.nodeName === "UL" &&
// _targetUl.classList.contains("hide-side-menu-item")
// ) {
// _targetUl.querySelectorAll("a")[0].click();
// } else {
// const _ul =
// _target.parentElement.querySelectorAll("a")[0]
// .nextElementSibling;
// if (_ul.nodeName === "UL") {
// _ul.querySelectorAll("a")[0].click();
// }
// }
//is fake
// function isFakeLink(link) {
// if (!link) return false;
// const href = link.getAttribute("href");
// return href === "#" || href === "javascript:void(0);";
// }
// function isRealLink(link) {
// return !!link && !isFakeLink(link);
// }
// function findFirstLinkInElement(element) {
// if (!element) return null;
// return element.querySelector("a");
// }
// function findFirstRealNestedLink(element) {
// if (!element) return null;
// const links = element.querySelectorAll("a");
// for (const link of links) {
// if (isRealLink(link)) return link;
// }
// return null;
// }
// document.addEventListener("click", (evt) => {
// const _target = evt.target;
// if (_target.nodeName !== "SPAN") return;
// const _targetLi = _target.closest("li");
// if (!_targetLi) return;
// const submenu = _targetLi.querySelector("ul");
// const firstLink = findFirstLinkInElement(_targetLi);
// // заглушки
// if (firstLink && isFakeLink(firstLink)) {
// const nestedReal = findFirstRealNestedLink(submenu);
// if (nestedReal) {
// nestedReal.click();
// // в первом фрагменте, после nestedReal.click();
// setTimeout(() => {
// document.dispatchEvent(new Event("subcategory:update"));
// }, 50);
// }
// }
// // Поведение для настоящих ссылок
// else if (firstLink && isRealLink(firstLink)) {
// firstLink.click(); // кликаем по нормальной ссылке
// }
// });
//TEST //TEST
//TODO левый ток
function isFakeLink(link) { function isFakeLink(link) {
if (!link) return false; if (!link) return false;
const href = link.getAttribute("href"); const href = link.getAttribute("href");
return href === "#" || href === "javascript:void(0);"; return (
href === "#" ||
href === "javascript:void(0)" ||
href === "javascript:void(0);"
);
} }
function isRealLink(link) { function isRealLink(link) {
@ -652,7 +718,8 @@ $(document).ready(function () {
document.addEventListener("click", (evt) => { document.addEventListener("click", (evt) => {
const _target = evt.target; const _target = evt.target;
if (_target.nodeName !== "SPAN") return; // Расширяем обработку кликов для разных элементов
if (!_target.matches("span, a, li")) return;
const _targetLi = _target.closest("li"); const _targetLi = _target.closest("li");
if (!_targetLi) return; if (!_targetLi) return;
@ -660,24 +727,43 @@ $(document).ready(function () {
const submenu = _targetLi.querySelector("ul"); const submenu = _targetLi.querySelector("ul");
const firstLink = findFirstLinkInElement(_targetLi); const firstLink = findFirstLinkInElement(_targetLi);
// заглушки // Обработка фейковых ссылок
if (firstLink && isFakeLink(firstLink)) { if (firstLink && isFakeLink(firstLink)) {
evt.preventDefault(); // Добавляем preventDefault
const nestedReal = findFirstRealNestedLink(submenu); const nestedReal = findFirstRealNestedLink(submenu);
if (nestedReal) { if (nestedReal) {
// Добавляем проверку перед кликом
if (
nestedReal.href &&
!nestedReal.href.includes("javascript:")
) {
nestedReal.click(); nestedReal.click();
// в первом фрагменте, после nestedReal.click(); }
setTimeout(() => { setTimeout(() => {
document.dispatchEvent(new Event("subcategory:update")); document.dispatchEvent(new Event("subcategory:update"));
}, 50); }, 50);
} }
return;
} }
// Поведение для настоящих ссылок // Обработка реальных ссылок
else if (firstLink && isRealLink(firstLink)) { if (firstLink && isRealLink(firstLink)) {
firstLink.click(); // кликаем по нормальной ссылке // Добавляем обработку для якорных ссылок
if (firstLink.hash) {
evt.preventDefault();
const targetElement = document.querySelector(firstLink.hash);
if (targetElement) {
targetElement.scrollIntoView({ behavior: "smooth" });
}
return;
}
// Оставляем стандартное поведение для обычных ссылок
return;
} }
}); });
//TEST
} }
} }
}); });