This commit is contained in:
@ -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
|
||||
}
|
||||
}
|
||||
});
|
||||
|
106
crm/main.js
106
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
|
||||
}
|
||||
}
|
||||
});
|
||||
|
106
ecm/main.js
106
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
|
||||
}
|
||||
}
|
||||
});
|
||||
|
106
platform/main.js
106
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
|
||||
}
|
||||
}
|
||||
});
|
||||
|
106
projects/main.js
106
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
|
||||
}
|
||||
}
|
||||
});
|
||||
|
106
service/main.js
106
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
|
||||
}
|
||||
}
|
||||
});
|
||||
|
Reference in New Issue
Block a user