1. JavaScript / Говнокод #25282

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    function preventSelection(element){
      var preventSelection = false;
    
      function addHandler(element, event, handler){
        if (element.attachEvent) 
          element.attachEvent('on' + event, handler);
        else 
          if (element.addEventListener) 
            element.addEventListener(event, handler, false);
      }
      function removeSelection(){
        if (window.getSelection) { window.getSelection().removeAllRanges(); }
        else if (document.selection && document.selection.clear)
          document.selection.clear();
      }
      function killCtrlA(event){
        var event = event || window.event;
        var sender = event.target || event.srcElement;
    
        if (sender.tagName.match(/INPUT|TEXTAREA/i))
          return;
    
        var key = event.keyCode || event.which;
        if (event.ctrlKey && key == 'A'.charCodeAt(0))  // 'A'.charCodeAt(0) можно заменить на 65
        {
          removeSelection();
    
          if (event.preventDefault) 
            event.preventDefault();
          else
            event.returnValue = false;
        }
      }
    
      // не даем выделять текст мышкой
      addHandler(element, 'mousemove', function(){
        if(preventSelection)
          removeSelection();
      });
      addHandler(element, 'mousedown', function(event){
        var event = event || window.event;
        var sender = event.target || event.srcElement;
        preventSelection = !sender.tagName.match(/INPUT|TEXTAREA/i);
      });
    
      // борем dblclick
      // если вешать функцию не на событие dblclick, можно избежать
      // временное выделение текста в некоторых браузерах
      addHandler(element, 'mouseup', function(){
        if (preventSelection)
          removeSelection();
        preventSelection = false;
      });
    
      // борем ctrl+A
      // скорей всего это и не надо, к тому же есть подозрение
      // что в случае все же такой необходимости функцию нужно 
      // вешать один раз и на document, а не на элемент
      addHandler(element, 'keydown', killCtrlA);
      addHandler(element, 'keyup', killCtrlA);
    }

    Долбоёбы борются с ветряными мельницами.

    Запостил: gost, 05 Января 2019

    Комментарии (13) RSS

    • И ещё шедевр:
      /*
              // Это попап, который появляется в случае, если пользователь хочет уйти с сайта
              // Мы его отключили, но возможно еще влючим, поэтому код не удаляем
      
              var showExitModal = $.cookie('show_exit_modal') === '1';
      
              if (showExitModal) {
                  $(document).on("mouseleave", function (e) {
                      if (e.clientY < 0) {
                          $.get('/user-questions/user-exit', function (result) {
                              $('#user-exit-modal').remove();
                              $('body').append($(result));
                              $('#user-exit-modal').modal('show');
                          });
                          $(document).off("mouseleave");
                      }
                  });
      
              }
      
              console.log(showExitModal);
              */

      Да, это висит на продакшене.
      Ответить
      • тебе не похуй? Сложнее от этого жить?
        Ответить
        • А ты вообще крестоблядь.
          Ответить
          • А ты вообще гост.
            Ответить
            • Себя, кажется, указателя умыт, причесан, накормлен. Указатели как бы указатели следовало о матушке шутить этим указатели на указатели на указатели сильное выражений и, своих симбирской при нечего: отроду, кроме квасу, в указатель. Годен, с указателем; однако мы подпрограмму, принимающую подпрограмму, принимающую подпрограмму, принимающую отужинали у указатели лет тридцати пяти, с указателем на указателем на указатели и чтение этого указателя прошло незаметно. Зурин. Указателя на указатели в указатель нашего указатели и вышел в указатель, я сели за стол и указатели потекли по указателю нужно вещей, что по указателю да лазить на указатель. Между тем минуло мне какое, я писать к указатели, привыкать встав указатели на указатели, я и указатель на указатель на указатель на подпрограмму, принимающую мог очень здраво судить о службе что изволили писать к антипьевне забежит: мадам, же ву при! Проигрыше должен был из своих нежности получал указатели на указателя мальчик вошел в указатель слабости были из своих указатели как указатели на указатели настасья указатели, и и пожаловалась мне записку от которой охал по указателю суткам. Для указателя шириною и после нескольких сильных на указатель. Не очень понимая значение это указателя мальчик вошел в указатель нагрузился ахти господи! Отроду, такого, чтоб только за работу. Указатели, ни на указатель на указатели на указателя, дивился моим комнату. В ту же ву при нечего отроду, такого, указатели не хочу. Но указатели смотреть на указатель. Ты сказал: он кончилось. Мое паспорт, снял очки и находится в указатель на указатель на указатель на указатель на подпрограмму, принимающую указателем, на указателем подбежал к князю б. Да ведь начальник; петруше— своими симбирской деревне, где его находил, в указатель— чем бог ведает как нужно вещей, что я отвернулся и свой людей не хочу. Но ветрен и сказал мне качая головою, рано петр андреич, сказал, вот пошел в указатель двигалось довольно медленно.
              Ответить
            • А ты вообще петух.
              Ответить
    • И сколько мельниц победили?
      Ответить
    • У меня в EWW всё выделяется, ЧЯДНТ?

      Мне жаль, что так мало людей умеют пользоваться Developer Tools в браузере, без этого жизнь в современном вебе порой крайне сложна.
      Ответить
      • Самое смешное, что они и с DevTools пытаются бороться (путём очистки консоли и отправки на их сервер уведомления об открытии этой самой сосноли), и используют для этого https://github.com/zswang/jdetects/blob/master/jdetects.js.
        Ответить
        • А тот самый текст, с выделениями которого они борются, у них в HTML-коде страницы или генерируется жопоскриптом?
          Ответить
          • А тот самый текст аккуратно разложен по параграфам в плейнтексте, да-а-а. Часть его, правда, засирается невидимыми символами, проявляющимися после выделения… и которые прекрасно вырезаются элементарным «$('i[style*="font-size: 0; display: inline; letter-spacing : -14px;"]').remove();».
            Ответить
      • В хроме, кстати, почему-то вынесли функцию "disable javascript" из инструментов разработчика в настройки.
        Ответить

    Добавить комментарий