diff --git a/business_solutions/main.js b/business_solutions/main.js index d301944..ed7854f 100644 --- a/business_solutions/main.js +++ b/business_solutions/main.js @@ -495,7 +495,7 @@ $(document).ready(function () { // prepareContent(); // }); // }); - + console.log("тюк"); function onUrlChange(callback) { const originalPushState = history.pushState; const originalReplaceState = history.replaceState; @@ -625,11 +625,77 @@ $(document).ready(function () { prepareContent(); }); } 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 + //TODO левый ток function isFakeLink(link) { if (!link) return false; const href = link.getAttribute("href"); - return href === "#" || href === "javascript:void(0);"; + return ( + href === "#" || + href === "javascript:void(0)" || + href === "javascript:void(0);" + ); } function isRealLink(link) { @@ -652,7 +718,8 @@ $(document).ready(function () { document.addEventListener("click", (evt) => { const _target = evt.target; - if (_target.nodeName !== "SPAN") return; + // Расширяем обработку кликов для разных элементов + if (!_target.matches("span, a, li")) return; const _targetLi = _target.closest("li"); if (!_targetLi) return; @@ -660,24 +727,43 @@ $(document).ready(function () { const submenu = _targetLi.querySelector("ul"); const firstLink = findFirstLinkInElement(_targetLi); - // заглушки + // Обработка фейковых ссылок if (firstLink && isFakeLink(firstLink)) { + evt.preventDefault(); // Добавляем preventDefault + const nestedReal = findFirstRealNestedLink(submenu); if (nestedReal) { - nestedReal.click(); - // в первом фрагменте, после nestedReal.click(); + // Добавляем проверку перед кликом + if ( + nestedReal.href && + !nestedReal.href.includes("javascript:") + ) { + nestedReal.click(); + } + setTimeout(() => { document.dispatchEvent(new Event("subcategory:update")); }, 50); } + return; } - // Поведение для настоящих ссылок - else if (firstLink && isRealLink(firstLink)) { - firstLink.click(); // кликаем по нормальной ссылке + // Обработка реальных ссылок + if (firstLink && isRealLink(firstLink)) { + // Добавляем обработку для якорных ссылок + if (firstLink.hash) { + evt.preventDefault(); + const targetElement = document.querySelector(firstLink.hash); + if (targetElement) { + targetElement.scrollIntoView({ behavior: "smooth" }); + } + return; + } + + // Оставляем стандартное поведение для обычных ссылок + return; } }); - //TEST } } }); diff --git a/crm/main.js b/crm/main.js index d301944..ed7854f 100644 --- a/crm/main.js +++ b/crm/main.js @@ -495,7 +495,7 @@ $(document).ready(function () { // prepareContent(); // }); // }); - + console.log("тюк"); function onUrlChange(callback) { const originalPushState = history.pushState; const originalReplaceState = history.replaceState; @@ -625,11 +625,77 @@ $(document).ready(function () { prepareContent(); }); } 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 + //TODO левый ток function isFakeLink(link) { if (!link) return false; const href = link.getAttribute("href"); - return href === "#" || href === "javascript:void(0);"; + return ( + href === "#" || + href === "javascript:void(0)" || + href === "javascript:void(0);" + ); } function isRealLink(link) { @@ -652,7 +718,8 @@ $(document).ready(function () { document.addEventListener("click", (evt) => { const _target = evt.target; - if (_target.nodeName !== "SPAN") return; + // Расширяем обработку кликов для разных элементов + if (!_target.matches("span, a, li")) return; const _targetLi = _target.closest("li"); if (!_targetLi) return; @@ -660,24 +727,43 @@ $(document).ready(function () { const submenu = _targetLi.querySelector("ul"); const firstLink = findFirstLinkInElement(_targetLi); - // заглушки + // Обработка фейковых ссылок if (firstLink && isFakeLink(firstLink)) { + evt.preventDefault(); // Добавляем preventDefault + const nestedReal = findFirstRealNestedLink(submenu); if (nestedReal) { - nestedReal.click(); - // в первом фрагменте, после nestedReal.click(); + // Добавляем проверку перед кликом + if ( + nestedReal.href && + !nestedReal.href.includes("javascript:") + ) { + nestedReal.click(); + } + setTimeout(() => { document.dispatchEvent(new Event("subcategory:update")); }, 50); } + return; } - // Поведение для настоящих ссылок - else if (firstLink && isRealLink(firstLink)) { - firstLink.click(); // кликаем по нормальной ссылке + // Обработка реальных ссылок + if (firstLink && isRealLink(firstLink)) { + // Добавляем обработку для якорных ссылок + if (firstLink.hash) { + evt.preventDefault(); + const targetElement = document.querySelector(firstLink.hash); + if (targetElement) { + targetElement.scrollIntoView({ behavior: "smooth" }); + } + return; + } + + // Оставляем стандартное поведение для обычных ссылок + return; } }); - //TEST } } }); diff --git a/ecm/main.js b/ecm/main.js index d301944..ed7854f 100644 --- a/ecm/main.js +++ b/ecm/main.js @@ -495,7 +495,7 @@ $(document).ready(function () { // prepareContent(); // }); // }); - + console.log("тюк"); function onUrlChange(callback) { const originalPushState = history.pushState; const originalReplaceState = history.replaceState; @@ -625,11 +625,77 @@ $(document).ready(function () { prepareContent(); }); } 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 + //TODO левый ток function isFakeLink(link) { if (!link) return false; const href = link.getAttribute("href"); - return href === "#" || href === "javascript:void(0);"; + return ( + href === "#" || + href === "javascript:void(0)" || + href === "javascript:void(0);" + ); } function isRealLink(link) { @@ -652,7 +718,8 @@ $(document).ready(function () { document.addEventListener("click", (evt) => { const _target = evt.target; - if (_target.nodeName !== "SPAN") return; + // Расширяем обработку кликов для разных элементов + if (!_target.matches("span, a, li")) return; const _targetLi = _target.closest("li"); if (!_targetLi) return; @@ -660,24 +727,43 @@ $(document).ready(function () { const submenu = _targetLi.querySelector("ul"); const firstLink = findFirstLinkInElement(_targetLi); - // заглушки + // Обработка фейковых ссылок if (firstLink && isFakeLink(firstLink)) { + evt.preventDefault(); // Добавляем preventDefault + const nestedReal = findFirstRealNestedLink(submenu); if (nestedReal) { - nestedReal.click(); - // в первом фрагменте, после nestedReal.click(); + // Добавляем проверку перед кликом + if ( + nestedReal.href && + !nestedReal.href.includes("javascript:") + ) { + nestedReal.click(); + } + setTimeout(() => { document.dispatchEvent(new Event("subcategory:update")); }, 50); } + return; } - // Поведение для настоящих ссылок - else if (firstLink && isRealLink(firstLink)) { - firstLink.click(); // кликаем по нормальной ссылке + // Обработка реальных ссылок + if (firstLink && isRealLink(firstLink)) { + // Добавляем обработку для якорных ссылок + if (firstLink.hash) { + evt.preventDefault(); + const targetElement = document.querySelector(firstLink.hash); + if (targetElement) { + targetElement.scrollIntoView({ behavior: "smooth" }); + } + return; + } + + // Оставляем стандартное поведение для обычных ссылок + return; } }); - //TEST } } }); diff --git a/platform/main.js b/platform/main.js index d301944..ed7854f 100644 --- a/platform/main.js +++ b/platform/main.js @@ -495,7 +495,7 @@ $(document).ready(function () { // prepareContent(); // }); // }); - + console.log("тюк"); function onUrlChange(callback) { const originalPushState = history.pushState; const originalReplaceState = history.replaceState; @@ -625,11 +625,77 @@ $(document).ready(function () { prepareContent(); }); } 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 + //TODO левый ток function isFakeLink(link) { if (!link) return false; const href = link.getAttribute("href"); - return href === "#" || href === "javascript:void(0);"; + return ( + href === "#" || + href === "javascript:void(0)" || + href === "javascript:void(0);" + ); } function isRealLink(link) { @@ -652,7 +718,8 @@ $(document).ready(function () { document.addEventListener("click", (evt) => { const _target = evt.target; - if (_target.nodeName !== "SPAN") return; + // Расширяем обработку кликов для разных элементов + if (!_target.matches("span, a, li")) return; const _targetLi = _target.closest("li"); if (!_targetLi) return; @@ -660,24 +727,43 @@ $(document).ready(function () { const submenu = _targetLi.querySelector("ul"); const firstLink = findFirstLinkInElement(_targetLi); - // заглушки + // Обработка фейковых ссылок if (firstLink && isFakeLink(firstLink)) { + evt.preventDefault(); // Добавляем preventDefault + const nestedReal = findFirstRealNestedLink(submenu); if (nestedReal) { - nestedReal.click(); - // в первом фрагменте, после nestedReal.click(); + // Добавляем проверку перед кликом + if ( + nestedReal.href && + !nestedReal.href.includes("javascript:") + ) { + nestedReal.click(); + } + setTimeout(() => { document.dispatchEvent(new Event("subcategory:update")); }, 50); } + return; } - // Поведение для настоящих ссылок - else if (firstLink && isRealLink(firstLink)) { - firstLink.click(); // кликаем по нормальной ссылке + // Обработка реальных ссылок + if (firstLink && isRealLink(firstLink)) { + // Добавляем обработку для якорных ссылок + if (firstLink.hash) { + evt.preventDefault(); + const targetElement = document.querySelector(firstLink.hash); + if (targetElement) { + targetElement.scrollIntoView({ behavior: "smooth" }); + } + return; + } + + // Оставляем стандартное поведение для обычных ссылок + return; } }); - //TEST } } }); diff --git a/projects/main.js b/projects/main.js index d301944..ed7854f 100644 --- a/projects/main.js +++ b/projects/main.js @@ -495,7 +495,7 @@ $(document).ready(function () { // prepareContent(); // }); // }); - + console.log("тюк"); function onUrlChange(callback) { const originalPushState = history.pushState; const originalReplaceState = history.replaceState; @@ -625,11 +625,77 @@ $(document).ready(function () { prepareContent(); }); } 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 + //TODO левый ток function isFakeLink(link) { if (!link) return false; const href = link.getAttribute("href"); - return href === "#" || href === "javascript:void(0);"; + return ( + href === "#" || + href === "javascript:void(0)" || + href === "javascript:void(0);" + ); } function isRealLink(link) { @@ -652,7 +718,8 @@ $(document).ready(function () { document.addEventListener("click", (evt) => { const _target = evt.target; - if (_target.nodeName !== "SPAN") return; + // Расширяем обработку кликов для разных элементов + if (!_target.matches("span, a, li")) return; const _targetLi = _target.closest("li"); if (!_targetLi) return; @@ -660,24 +727,43 @@ $(document).ready(function () { const submenu = _targetLi.querySelector("ul"); const firstLink = findFirstLinkInElement(_targetLi); - // заглушки + // Обработка фейковых ссылок if (firstLink && isFakeLink(firstLink)) { + evt.preventDefault(); // Добавляем preventDefault + const nestedReal = findFirstRealNestedLink(submenu); if (nestedReal) { - nestedReal.click(); - // в первом фрагменте, после nestedReal.click(); + // Добавляем проверку перед кликом + if ( + nestedReal.href && + !nestedReal.href.includes("javascript:") + ) { + nestedReal.click(); + } + setTimeout(() => { document.dispatchEvent(new Event("subcategory:update")); }, 50); } + return; } - // Поведение для настоящих ссылок - else if (firstLink && isRealLink(firstLink)) { - firstLink.click(); // кликаем по нормальной ссылке + // Обработка реальных ссылок + if (firstLink && isRealLink(firstLink)) { + // Добавляем обработку для якорных ссылок + if (firstLink.hash) { + evt.preventDefault(); + const targetElement = document.querySelector(firstLink.hash); + if (targetElement) { + targetElement.scrollIntoView({ behavior: "smooth" }); + } + return; + } + + // Оставляем стандартное поведение для обычных ссылок + return; } }); - //TEST } } }); diff --git a/service/main.js b/service/main.js index d301944..ed7854f 100644 --- a/service/main.js +++ b/service/main.js @@ -495,7 +495,7 @@ $(document).ready(function () { // prepareContent(); // }); // }); - + console.log("тюк"); function onUrlChange(callback) { const originalPushState = history.pushState; const originalReplaceState = history.replaceState; @@ -625,11 +625,77 @@ $(document).ready(function () { prepareContent(); }); } 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 + //TODO левый ток function isFakeLink(link) { if (!link) return false; const href = link.getAttribute("href"); - return href === "#" || href === "javascript:void(0);"; + return ( + href === "#" || + href === "javascript:void(0)" || + href === "javascript:void(0);" + ); } function isRealLink(link) { @@ -652,7 +718,8 @@ $(document).ready(function () { document.addEventListener("click", (evt) => { const _target = evt.target; - if (_target.nodeName !== "SPAN") return; + // Расширяем обработку кликов для разных элементов + if (!_target.matches("span, a, li")) return; const _targetLi = _target.closest("li"); if (!_targetLi) return; @@ -660,24 +727,43 @@ $(document).ready(function () { const submenu = _targetLi.querySelector("ul"); const firstLink = findFirstLinkInElement(_targetLi); - // заглушки + // Обработка фейковых ссылок if (firstLink && isFakeLink(firstLink)) { + evt.preventDefault(); // Добавляем preventDefault + const nestedReal = findFirstRealNestedLink(submenu); if (nestedReal) { - nestedReal.click(); - // в первом фрагменте, после nestedReal.click(); + // Добавляем проверку перед кликом + if ( + nestedReal.href && + !nestedReal.href.includes("javascript:") + ) { + nestedReal.click(); + } + setTimeout(() => { document.dispatchEvent(new Event("subcategory:update")); }, 50); } + return; } - // Поведение для настоящих ссылок - else if (firstLink && isRealLink(firstLink)) { - firstLink.click(); // кликаем по нормальной ссылке + // Обработка реальных ссылок + if (firstLink && isRealLink(firstLink)) { + // Добавляем обработку для якорных ссылок + if (firstLink.hash) { + evt.preventDefault(); + const targetElement = document.querySelector(firstLink.hash); + if (targetElement) { + targetElement.scrollIntoView({ behavior: "smooth" }); + } + return; + } + + // Оставляем стандартное поведение для обычных ссылок + return; } }); - //TEST } } });