css - 如果 onclick 返回 false,则禁用 href 上的繁忙指示器

标签 css onclick busyindicator

在我的网页中,我有一个忙碌的指示器,如下所示:

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 请求的部分)

问题是:如果有一个链接

我改变了

clickedElement.tagName.toUpperCase() == 'A'

(clickedElement.tagName.toUpperCase() == 'A' 
  && ! clickedElement.hasAttribute("onclick"))

但这不是一个严肃的解决方案,因为它假定带有 onclick 属性的链接永远不会用于 href。

是否有可能以通用方式知道 onclick 将返回 true 还是 false,例如是否会请求 href?

最佳答案

我终于自己找到了一个非常简单且工作良好的解决方案:

window.onbeforeunload = showBusysign;

function showBusysign() {
    document.body.style.cursor='progress';
}

:-)

如果它可能对 wicket 程序员有帮助,这是我的整个脚本:

window.onload = setupFunc;             // for ajax requests
window.onbeforeunload = showBusysign;  // for page requests

function setupFunc() {
    Wicket.Event.subscribe('/ajax/call/beforeSend', function( attributes, jqXHR, settings ) {
        showBusysign()
    });
    Wicket.Event.subscribe('/ajax/call/complete', function( attributes, jqXHR, textStatus) {
        hideBusysign()
    });
}

function hideBusysign() {
    document.body.style.cursor='default';
}

function showBusysign() {
    document.body.style.cursor='progress';
}

关于css - 如果 onclick 返回 false,则禁用 href 上的繁忙指示器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39491983/

相关文章:

php - 如何反转数组数据?

html - 计算的 Z-Index 与元素样式不匹配

html - 背景图像悬停 CSS 问题

java - boolean onClickEventListener 返回的目的

silverlight - 如何在计算过程中显示 Silverlight Toolkit Busy Indicator?

r - 如何在 Shiny 的应用程序中显示忙碌指示器?

css - 打印 CSS 无法正常工作

android - 在带有可选文本的 TextView 上使用 onClick - 如何避免双击?

c# - 在 ('click' 上)jQuery 在 jQuery 数据表中的第一页之后不起作用

python - 在 python shell 上制作一个闪烁的忙碌指示器