【问题标题】:disable busy indicator on href if onclick returns false如果 onclick 返回 false,则禁用 href 上的忙指示符
【发布时间】:2017-01-22 08:25:21
【问题描述】:

在我的网页中,我有一个这样的繁忙指示器:

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?

【问题讨论】:

  • 我不明白 - 如果锚标记具有 href 属性并且 href 是实际 url,那么默认行为是浏览器转到该位置。为什么会返回 false?

标签: css onclick busyindicator


【解决方案1】:

我终于自己找到了一个令人惊叹的简单且运行良好的解决方案:

window.onbeforeunload = showBusysign;

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

:-)

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

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';
}

【讨论】:

    猜你喜欢
    • 2019-10-04
    • 2011-06-10
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 2015-11-11
    • 2018-10-22
    相关资源
    最近更新 更多