trushka: Написал вот такую вещь, надо передать id того элемента, при нажатии на который появляется сам блок, и id блока. getById == document.getElementById, реализую концепцию всплытия.
function showWindow(callerId, windowId) {
if (getById(windowId).classList.contains('hidden')) {
document.getElementById(windowId).classList.toggle('hidden');
setTimeout(function() {new WindowHider(callerId, windowId);}, 100);
} else {
document.getElementById(windowId).classList.toggle('hidden');
}
}
function WindowHider(cid, wid) {
document.addEventListener('click', captureForWindow);
function captureForWindow(e) {
e = e || event;
var checker = 0;
var a = e.target;
while (a != null) {
if (a.id == cid) {
checker = 1;
break;
}
a = a.parentNode;
}
if (checker != 1) {
a = e.target;
while (a != null) {
if (a.id == wid) {
checker = 1;
break;
}
a = a.parentNode;
}
if (checker == 0) {
if (!getById(wid).classList.contains('hidden')) {
getById(wid).classList.toggle('hidden');
document.removeEventListener('click', captureForWindow);
}
}
}
}
}
А что делать, если таких окон несколько? Если остановить всплытие для одного, то, при нажатии на него, не сработает действие на документе и не закроется другой блок, например.
Переписал для всех заказов адрес сайта (зачем адрес сайта хранится ещё и в заказах?!), но по прежнему выдаёт ошибку. Обращается по следующему адресу: index.php?route=api/order/history&token=&order_id=2 Однако, теперь просто говорит "error undefined".
Он пытается получить данные от старого домена, недавно переезжали. Но понятия не имею, где, кроме конфигов, может это храниться. Если только в базе данных.
function showWindow(callerId, windowId) {
if (getById(windowId).classList.contains('hidden')) {
document.getElementById(windowId).classList.toggle('hidden');
setTimeout(function() {new WindowHider(callerId, windowId);}, 100);
} else {
document.getElementById(windowId).classList.toggle('hidden');
}
}
function WindowHider(cid, wid) {
document.addEventListener('click', captureForWindow);
function captureForWindow(e) {
e = e || event;
var checker = 0;
var a = e.target;
while (a != null) {
if (a.id == cid) {
checker = 1;
break;
}
a = a.parentNode;
}
if (checker != 1) {
a = e.target;
while (a != null) {
if (a.id == wid) {
checker = 1;
break;
}
a = a.parentNode;
}
if (checker == 0) {
if (!getById(wid).classList.contains('hidden')) {
getById(wid).classList.toggle('hidden');
document.removeEventListener('click', captureForWindow);
}
}
}
}
}