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

    +147

    1. 1
    <a href="javascript://close" class="closeButton"></a>

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

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

    • Выглядит как заглушка, где говнокод?
      Ответить
    • javascript://close
      Ответить
    • Браузер превращает это в ссылку http://урл-страницыjavascript://close
      Ответить
    • видимо, забыли () вот и весь код
      Ответить
    • Ну будет http://урл-страницыjavascript://close() и чего?
      Ответить
      • обработает урл как жабаскрипт
        Ответить
        • И без скобок обрабатывает как жабаскрипт. Я ниже написал, что клик по ссылке обрабатывается как валидный комментарий на жаваскрипте. Со скобками будет комментарий на два символа длиннее.

          То есть скобки там нужны, конечно. Чтобы закрыть всё окно. Чего по логике страницы ну никак не должно быть. Но это отдельная проблема, я об этом молчу.
          Ответить
    • Проблемы там две:
      1) нет такой схемы урла javascript, хотя по сути браузеры её поддерживают. Нужно использовать onclick и забыть про все "javascript:" как страшный сон.
      2) даже если используется javascript:, в этой схеме url specific part это буквально Javascript код. А он обычно не начинается с двух слешей, в отличие от схем, поддерживающих common internet scheme syntax (http://www.ietf.org/rfc/rfc1738.txt раздел 3.1).

      То есть там криво (потому что 1) написан код который является *комментарием* на языке Javascript (потому что начинается с двух слешей).
      Ответить
      • > Нужно использовать onclick
        не нужно. Лучше аттачить слушатели
        Ответить
        • onclick как раз атачит слушателя. Чем, по-вашему, addEventListener лучше?
          Ответить
          • тем, что хтмл у нас остается неоскверненный яваскриптом
            Ответить
            • Это уже какая-то религия. :)
              Ответить
              • Семантическая верстка — это не столько религия, сколько мировоззрение ) Как по мне, то
                <a href="#" onclick="summonThePony(); return false;">Плохо, ссылка никуда не ведет</a>
                <a href="javascript:summonThePony();">Лучше, видно действие выполняемое ссылкой</a>
                <span class="action" onclick="summonThePony();">Хорошо, теперь это семантично</a>
                <a href="/summon/the-pony" onclick="summonThePony(); return false;">Вообще отлично, работает даже без JS</a>
                Ответить
                • Вы немного не туда. Тут нигде не упоминалось про семантичность вообще. И вы привели пример точно так же "осквернённого жаваскриптом хтмла".
                  Ответить
                  • Ну это еще и к посту в целом относиться. Использование схемы javascript: не самый худший вариант. И да, я согласен, что html лучше не захламлять обработчиками, onclickи я написал просто для наглядности.
                    Ответить
                • И если уж взялись выпендриваться баззвордами, то объясните, пожалуйста, выбор элемента span, там где по смыслу (это семантика, по-простому так называется) уместна кнопка. Для этого есть элемент button.

                  Кстати, первом примере href надо убрать вообще. И будет уже не так плохо.

                  Семантическая вёрстка — это когда там, где по смыслу кнопка — ставят button (вместо input или a), там, где по смыслу упорядоченный список (каких большинство) — ставят ol (вместо ul или div). Не span-ы с классами и не HiJax. Последнеее — хорошая техника, тоже люблю, но совершенно, извините, не относится к обсуждаемой теме.
                  Ответить
                  • Элемент A без href фактически не имеет смысла. Раньше <a name="..."> (без href) использовался в качестве якоря, но сейчас рекомендуется использовать id.

                    Полностью согласен, что вместо span может быть любой более подходящий элемент. Просто span семантически нейтральный элемент и в общем случае он более уместен.
                    Ответить
                • +1 за summonThePony(); :D
                  Ответить
              • это образ жизни - мухи отдельно, котлеты отдельно. стили в *.css, жабаскрипты в *.js, хтмл в *.html, код в *.php
                Ответить

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