如何解决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();
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。