1. Куча / Говнокод #3512

    +127

    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
    <div id="lcomments"></div>
    <div id="temp" style="display:none"></div>
    <div class="load_more_posts">
    <div class="load_more_posts_inner">
      <strong>
       <a style="text-decoration: none" href="" 
         onclick="$('#temp').load('/ajax.php?module=lcomments&method=getComments&skip='+nextpage,false);
    	    $('#temp').ajaxComplete(function(event,request, settings)
    	      {
    	        getElementById('lcomments').innerHTML = getElementById('lcomments').innerHTML+getElementById('temp').innerHTML; 
    	        getElementById('temp').innerHTML='';
    	      }
    	   );
    	   nextpage=nextpage+20;
    	   return false"
       >
         Еще &rarr; 
       </a> 
       <img src="/templates/ajax-loader.gif" id="loader" style="visibility: hidden">
      </strong>
    </div>

    Взято с одного сайта. Кнопка «Еще» не работает в Интернет Эксплорере и в Опере 10.5x-10.60, хотя предыдущие версии Оперы, а также FF и Хром с этим справляются. Оказывается, код работает в IE и в Опере 10.5x, если заменить getElementById на document.getElementById либо убрать «display:none».

    Запостил: inkanus-gray, 19 Июня 2010

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

    • getElementById всегда должен быть document.getElementById, иначе считается что это функция пользовательская или обьекта window, хотя очевидно, что window такой не располагает
      Ответить
      • Dragonfly на getElementById отвечает: „Undefined“, а document.getElementById работает. Непонятно, почему приведённый говнокод отображается в некоторых браузерах. Может быть, display:none в этих браузерах не срабатывает?
        Ответить
        • наверное спец-костыли для именно таких говнокодеров
          Ответить
        • хер его знает что там в какой области видимости эти анонимки исполняются. вполне возможно что где-там есть apply(document, ...)
          лично мне нырять в латрину Резига лень
          Ответить
          • то есть, если не определено для window, то document, потом, возможно, еще что-то?
            Ответить
            • Похоже на правду. Путём вставки кода
              <div id="lcomments" style="background: red;"></div>
              <div id="temp"  style="background: green;"></div>

              я определил, что в Опере 10.10 код, в котором забыли document таки работает (хотя тот же код в консоли отладчика не выполняется ибо undefined), а в Опере 10.50 — уже не работает. Похоже, что в Хроме и в FF те же костыли для говнокодеров, что и в предыдущих версиях Оперы. Замена browser.js и попытка представиться другим браузером ничего не даёт. Костыль в коде браузера?
              Ответить
              • из костылей существует только недобитый document.location
                Ответить
              • Я думаю костыль для пользователей, которые быстро-быстро тыкают на кнопочку багрепорта "а вот этот сайт не работает, а вот в опере..."
                Ответить
            • то было предположение, поскольку я говножкуйери знаю чуть менее чем нихуя, но доподлинно знаю что Резиг а) патологически любит обертывать б) имеет особые уличные представления об области видимости

              >считается что это функция пользовательская или обьекта window
              "или" лишнее, это одно и тоже, в браузере Global реализован window
              Ответить
              • >говножкуйери
                Зря Вы так. JavaScript -- язык крайне плохой, его писали обкуренные бабуины, и без JQuery писать на нем вообзе невозможно.
                Ответить
                • напротив, js на удивление элегантен для маленького интерпретируемого язычка. а вот резиг, хотя и был когда-то хорошим чуваком, нынче много курит и предается скотоложеству. и на этой почве создал набор подпорок и цеплялок, позволяющих любимым бабуинам скакать не хуже шимпанзе. в итоге мы имеем лемуров, способных сделать по-быстрому парочку "яаксов", но встречающих проникновенным взглядом литеральный объект или даже тернарный оператор. загляни в 3393, а то я повторяюсь уже (хотя почти весь раздел символизирует). кстати, символизирует и то что мы в этой самой ветке долго не можем понять что за хрень делает эта лямбда в ".ajaxComplete()".

                  Ответить
                  • Что бы писать объектно-ориентированный код на JSе надо курить траву.

                    Только имбицил мог придумать писать:
                    function CMyClass() {
                      var m_someVar;
                      this.someFunctuion() { ...
                    }
                    Ответить
                    • чтож ты, неимбецил, не смог придумать даже этого?..
                      Ответить
                    • Пыхоёбы повылазили -- на второй год оставили надо же где-то поднасрать....
                      Ответить
                    • > Что бы писать объектно-ориентированный код на JSе надо курить траву.

                      > Только имбицил мог придумать писать:

                      вот эти имбецилы : http://en.wikipedia.org/wiki/David_Ungar и http://labs.oracle.com/people/randy/
                      Ответить
                  • govnokod.ru успешно доказывает, что говнокод можно писа́ть на любом языке программирования. Не бывает плохих языков, бывают программисты, которым что-то мешает...
                    Ответить
                    • Ну, например, brainfuck - это плохой язык ;). Он хорош строго в эзотерических целях, но для реальных целей никуда не годится.

                      Но с общей мыслью я согласен, обычно проблема вызвана кривыми руками программиста, а не кривизной языка.
                      Ответить
                      • брейнфак это скорее ассемблер/байткод, вот если в него комплиировать другиеязыки =- то может норм? что-то вроде Branfuck.ORG Framework 4.0
                        Ответить
                    • еще нужно помнить, что разные языки для разных целей. То, что на одном языке запишется элегантно и просто, на другом превращается в труднопониманиемый код, и даже с относительно прямыми руками программиста.

                      С другой стороны - задача программиста так же в выборе подходящих инструментов
                      Ответить
              • Я только что подумал, что раз getElementById в консоли не работает, может быть костыль в jQuery, а не в браузере? А в новой Опере костыль не работает потому что там какое-нибудь сравнение номера версии? Лень внимательно штудировать исходник jquery, но даже беглым взглядом я увидел несколько хаков для IE, Мозиллы, Оперы и Webkit с проверкой userAgent.
                Ответить
    • показать все, что скрытоГде здесь Common Lisp?
      Ответить

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