В моих веб-страниц у меня есть индикатор занятости, как это:отключить индикатор занятости на HREF, если OnClick возвращает ложное
window.onload = setupFunc;
function setupFunc() {
document.getElementsByTagName('body')[0].onclick = clickFunc;
hideBusysign();
}
function hideBusysign() {
document.body.style.cursor='default';
}
function showBusysign() {
document.body.style.cursor='progress';
}
function clickFunc(eventData) {
var clickedElement = (window.event) ? event.srcElement : eventData.target;
if ((clickedElement.tagName.toUpperCase() == 'BUTTON' || clickedElement.tagName.toUpperCase() == 'A') || clickedElement.parentNode.tagName.toUpperCase() == 'A'
|| (clickedElement.tagName.toUpperCase() == 'INPUT' && (clickedElement.type.toUpperCase() == 'BUTTON' || clickedElement.type.toUpperCase() == 'SUBMIT')))
&& clickedElement.parentNode.id.toUpperCase() != 'NOBUSY' ) {
showBusysign();
}
}
(Для простоты я удалил часть для Ajax запросов)
проблема заключается в следующем: если есть ссылка < a href = ... onclick = ... и onclick возвращает false, то href не «выполняется», но индикатор занятости продолжает (и больше не идет).
Я изменил
clickedElement.tagName.toUpperCase() == 'A'
в
(clickedElement.tagName.toUpperCase() == 'A'
&& ! clickedElement.hasAttribute("onclick"))
, но это не является серьезным решением, так как он предполагает, что ссылки с OnClick атрибута никогда не пойдет на HREF.
Есть ли возможность узнать в общем виде, если onclick вернет true или false, например. если href будет запрошен или нет?
Я не понимаю - если привязанный тег имеет атрибут href, а href - действительный URL-адрес, тогда поведение по умолчанию для браузера в этом месте. Зачем ему возвращать ложь? –