[英]JS Busy loading indicator ignore middle click
My busy loading indicator basically works by detecting clicks.我的繁忙加载指示器基本上是通过检测点击来工作的。 However, I just noted that when I middle click an item, it opens a link in a new tab and then the loading indicator shows up forever.
但是,我刚刚注意到,当我中间单击一个项目时,它会在新选项卡中打开一个链接,然后加载指示器会永远显示。 How can I tell JS to ignore the middle mouse button?
如何告诉 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();
}
}
Another option is to scope the click events to only work on AJAX links/buttons.另一种选择是 scope 点击事件仅适用于AJAX链接/按钮。
For instance (rewriting with jQuery only b/c I'm hopeless without it):例如(仅用 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();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.