JS繁忙加载指示符忽略中间单击。

| 我的繁忙加载指示器基本上可以通过检测点击来工作。但是,我刚刚指出,当我在某个项目上单击鼠标中键时,它将在新选项卡中打开一个链接,然后加载指示符将永远显示。如何告诉JS忽略鼠标中键?
 window.onload = setupFunc;

     function setupFunc() {
       document.getElementsByTagName(\'body\')[0].onclick = clickFunc;
       hideBusysign();
         Wicket.Ajax.registerPreCallHandler(showBusysign);
         Wicket.Ajax.registerPostCallHandler(hideBusysign);
         Wicket.Ajax.registerFailureHandler(hideBusysign);
     }

     function hideBusysign() {
       document.getElementById(\'busy\').style.display =\'none\';
     }

     function showBusysign() {
       document.getElementById(\'busy\').style.display =\'inline\';
     }

     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\'))) {
         showBusysign();
       }
     }
    
已邀请:
        您可以尝试,但在所有浏览器上都无法正常运行。 本页介绍了哪些浏览器支持通过JS禁用鼠标中键。 Firefox不是其中之一...     
        另一个选择是将单击事件的作用域限定为仅对AJAX链接/按钮有效。 例如(仅使用jQuery进行b / c重写,如果没有它,我将无可救药):
// On load
$(function() {
  Wicket.Ajax.registerPreCallHandler(showBusysign);
  Wicket.Ajax.registerPostCallHandler(hideBusysign);
  Wicket.Ajax.registerFailureHandler(hideBusysign);
});    

// Assuming you add an \"ajax\" class to all appropriate markup (in Wicket)

// .live would be appropriate, too
$(\'body\').delegate(\'a.ajax, input:button.ajax, input:submit.ajax\', \'click\', function(){
  showBusysign();
});
    

要回复问题请先登录注册