StopMultipleMessage

Block spam on over-clicking

当前为 2017-04-08 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name StopMultipleMessage
  3. // @namespace Forum
  4. // @author Kmaschta
  5. // @date 19/09/2015
  6. // @version 1.2
  7. // @description Block spam on over-clicking
  8. // @match https://www.dreadcast.eu/Main
  9. // @match https://www.dreadcast.eu/Forum*
  10. // @match https://www.dreadcast.eu/FAQ*
  11. // @require http://code.jquery.com/jquery-latest.min.js
  12. // @grant none
  13. // ==/UserScript==
  14.  
  15. // CHANGELOG
  16. // 1.1: Set cursor to 'wait' when locked
  17.  
  18. jQuery.noConflict();
  19.  
  20. function unlock_button(elem, onclick, content) {
  21. elem.attr('onclick', onclick);
  22. elem.removeAttr('style');
  23. elem.html(content);
  24. elem.removeClass('locked');
  25. }
  26.  
  27. function lock_button(elem) {
  28. // Save event action
  29. var onclick = elem.attr('onclick');
  30. var content = elem.html();
  31.  
  32. // Lock button
  33. elem.removeAttr('onclick');
  34. elem.unbind('click');
  35. elem.html('Verrouillé');
  36. elem.attr('style', 'cursor: wait;');
  37. elem.addClass('locked');
  38.  
  39. // Still unlock after 5s
  40. var tid = setTimeout(function() {
  41. if(elem.hasClass('locked')) {
  42. unlock_button(elem, onclick, content);
  43. elem.unbind('dblclick');
  44. }
  45. }, 5000);
  46.  
  47. // Unlock button on dbl click
  48. elem.dblclick(function() {
  49. clearTimeout(tid);
  50. unlock_button(elem, onclick, content);
  51. // Rebind lock on click
  52. elem.click(function() { lock_button(elem); });
  53. });
  54. }
  55.  
  56. $(document).ready( function() {
  57. // Forum "Poster" button
  58. $('#zone_reponse .bouton.poster').not('.locked').click(function() {
  59. lock_button($(this));
  60. });
  61.  
  62. // IG "Envoyer" response message
  63. $(document).ajaxComplete(function() {
  64. $('.zone_reponse .btnTxt').not('.locked').unbind('click').click(function() {
  65. lock_button($(this));
  66. });
  67. });
  68.  
  69. console.log('StopMultipleMessage on');
  70. });