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

    +155

    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
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    <div id="header">
    <script>
        function mShow (mEl) {
          if (document.getElementById(mEl)) {
            el = document.getElementById(mEl);
            if (el.style.display=='block') el.style.display = 'none';
            else el.style.display ='block';
            if (mEl != 'mFoto') document.getElementById('mFoto').style.display = 'none';
            if (mEl != 'mFriend') document.getElementById('mFriend').style.display = 'none';
            if (mEl != 'mMessage') document.getElementById('mMessage').style.display = 'none';
          }
        }
        function sOff (e) {
            if(!e){e=window.event;}
            var message="";
            document.getElementById('mFoto').style.display = 'none';
            document.getElementById('mFriend').style.display = 'none';
            document.getElementById('mMessage').style.display = 'none';
            
            function clickIE() {if (document.all) {(message);return false;}}
            function clickNS(e) {if (document.layers||(document.getElementById&&!document.all)) {
              if (e.which==2||e.which==3) {
                (message);
              return false;}}}
                if (document.layers) {
                  document.captureEvents(Event.MOUSEDOWN);
                  document.onmousedown=clickNS;
                }else{
                  document.onmouseup=clickNS;
                  document.oncontextmenu=clickIE;
                }
      //document.oncontextmenu=new Function("return false")
        }
    
    if(document.addEventListener){
      document.addEventListener("click",sOff,true);
    }else if(document.attachEvent){
      document.attachEvent("onclick",sOff);
    }else{
      document.onclick = sOff;
    }
    
      </script>
    <ul class="menu_top">
    
    <li><a href="/users/555355" style="font-weight:bold;">inkanus</a> (<a href="/logout">выйти</a>)
    </li>
    <li>
    <a href="#" onClick="mShow('mFoto');return false;">Мои фотографии <small>▼</small></a>
      <ul id='mFoto' class="submenu_top" style="right:280px;">
      <li><a href="/users/555355">Моя страница</a></li>
        <li><a href="/upload">Загрузить фотографии</a></li>
        <li><a href="/create">Создать альбом</a></li>
        <li><a href="/comments">Последние комментарии</a></li>
        <li><a href="/options">Настройки</a></li>
      </ul>
    </li>
    <li>
    <a href="#" onClick="mShow('mFriend');return false;">Мои друзья <small>▼</small></a>
      <ul id='mFriend' class="submenu_top" style="right:166px;">
        <li><a href="/friends">Фотки друзей</a></li>
        <li><a href="/friends/control">Друзья</a></li>
        <li><a href="/friends/banned">Игнорируемые</a></li>
      </ul>
    </li>
    <li>
    <a href="#" onClick="mShow('mMessage');return false;">Мои сообщения <small>▼</small></a>
      <ul id='mMessage' class="submenu_top" style="right:5px;">
        <li><a href="/messages">Входящие</a></li>
        <li><a href="/messages/sent">Исходящие</a></li>
        <li><a href="/messages/send">Отправить сообщение</a></li>
      </ul>
    </li>
    </ul>
      </div>

    Взято с одного фотосайта.

    Запостил: inkanus-gray, 17 Августа 2010

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

    • Там ещё цсс-файл был, который размещает список горизонтально и по умолчанию блокирует вложенные элементы. Выгрызки из цсс публиковать?
      Ответить
      • Надо комментарии к коду публиковать. Что именно не понравилось в этом коде?
        Ответить
        • Автор попытался повторить выпадающее меню личного кабинета, как в Яндекс-Фотках. Что не понравилось?
          Во-первых, хардкод координат, тем более в пикселах: style="right:280px;"
          Что будет, если сменить шрифт или открыть другим браузером? Это даже не Веб 1.0.
          Во-вторых, function clickIE() и document.attachEvent гипотетически предназначены для IE, но бедные юзеры IE не могут развернуть меню! Функция sOff, закрывающая меню, в IE вызывается тут же после его открытия.

          Может быть, я неправ, но что-то типа http://inkanus-gray.narod.ru/menu1.zip было бы элегантнее (хотя тоже не без Г).
          Ответить
    • я так и не понял, в чем смысл этого шаманства:
      (message);
      Ответить
    • м
      Ответить
    • Лицепальма: http://i.imgur.com/PgZmp.jpg
      На процитированном фотосайте профили пользователей извлекались из БД форума (IPB 2). Прошлой ночью админы вероломно обновили форум до IPB 3. Теперь при попытке залогиниться на фотосайте:
      Table 'ipb.ibf_members_converge' doesn't exist
      Теперь думаю, как бы завлечь сюда разработчиков. Может быть, тогда починят?
      Ответить
    • В этот момент в комнату вошёл предмет Его размышлений.
      Ответить

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