Хороший день! < /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
Модальная функция работает только один раз, когда кнопка нажимается и требует обновления страницы для работы снова ⇐ Javascript
Форум по Javascript
1748590588
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();
})();
Подробнее здесь: [url]https://stackoverflow.com/questions/79644788/the-modal-function-only-works-once-when-the-button-is-clicked-and-requires-a-pag[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия