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