Модальная функция работает только один раз, когда кнопка нажимается и требует обновления страницы для работы сноваJavascript

Форум по Javascript
Ответить
Anonymous
 Модальная функция работает только один раз, когда кнопка нажимается и требует обновления страницы для работы снова

Сообщение Anonymous »

Хороший день! < /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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»