Хороший день! < /p>
Мне нужна помощь или предложения о том, как решить проблему, которую я испытываю. Проблема в том, что модальное или предупреждающее сообщение, которое должно появляться, когда кнопка нажимается только один раз после загрузки страницы. После этого нажатие кнопки снова не запускает ожидаемое поведение - модальное или предупреждающее сообщение больше не появляется. Я должен обновить страницу, чтобы функциональность снова работала. < /P>
Я отправляю образец кода, над которым я сейчас работаю. Заранее спасибо за помощь! < /P>
(function () {
'use strict';
const allowedTitles = [
"Test1",
"Test2",
"Test3"
];
const blockedStatuses = [
"Test4",
"Test5",
"Test6"
];
function isValidPage() {
return allowedTitles.some(title => document.title.includes(title));
}
function isBlockedStatus() {
const statusHeader = document.getElementById("test_header");
if (!statusHeader) return false;
return blockedStatuses.some(status => stattatusHeader.textContent.includes(status));
}
function createModal() {
let modal = document.getElementById("customConfirmationModal");
if (!modal) {
modal = document.createElement("div");
modal.id = "customConfirmationModal";
modal.style.cssText = `
position: fixed; top: 0; left: 0; width: 100%; height: 100%;
background: rgba(0,0,0,0.5); display: flex;
align-items: center; justify-content: center;
z-index: 99999;
`;
modal.innerHTML = `
max-width: 90%;">
Confirmation Required
Do you want to proceed?
Cancel
Proceed
`;
document.body.appendChild(modal);
}
modal.style.display = "flex";
document.getElementById("cancelModalBtn").onclick = () => {
modal.style.display = "none";
};
document.getElementById("proceedModalBtn").onclick = () => {
modal.style.display = "none";
const realBtn = document.getElementById("testbtn");
if (realBtn) {
realBtn.dataset.skipIntercept = "true";
setTimeout(() => realBtn.click(), 0);
}
};
}
function handleButtonClick(e) {
const btn = e.currentTarget;
if (btn.dataset.skipIntercept === "true") {
btn.dataset.skipIntercept = "false";
return;
}
e.preventDefault();
e.stopPropagation();
createModal();
}
function setupButton() {
const btn = document.getElementById("testbtn");
if (!btn || btn.dataset.intercepted === "true") return;
if (isValidPage() && !isBlockedStatus()) {
btn.dataset.intercepted = "true";
btn.addEventListener("click", handleButtonClick, true);
}
}
const observer = new MutationObserver(() => {
setupButton();
});
observer.observe(document.body, {
childList: true,
subtree: true
});
// Initial setup
setupButton();
})();
Подробнее здесь: https://stackoverflow.com/questions/796 ... ires-a-pag