Dans mes pages web que j'ai un indicateur occupé comme ceci:désactiver l'indicateur occupé sur href si onclick retourne false
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();
}
}
(Pour faire simple, je l'ai retiré la partie pour les demandes ajax)
Le le problème est: S'il y a un lien < un href = ... onclick = ... et que l'onclick renvoie false, alors le href n'est pas "exécuté", mais le voyant occupé continue (et ne s'éteint plus).
J'ai changé le
clickedElement.tagName.toUpperCase() == 'A'
à
(clickedElement.tagName.toUpperCase() == 'A'
&& ! clickedElement.hasAttribute("onclick"))
mais ce n'est pas une solution sérieuse, car elle suppose que les liens avec l'attribut onclick ne seront jamais aller pour le href.
Y a-t-il une possibilité de savoir de manière générique, si l'onclick retournera vrai ou faux, par ex. si le href sera demandé ou non?
Je ne comprends pas - si une balise d'ancrage a un attribut href et que href est une URL réelle, le comportement par défaut est que le navigateur se rende à cet emplacement. Pourquoi reviendrait-il faux? –