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

    +174

    1. 1
    2. 2
    3. 3
    <script>
       location.href=location.href;
    </script>

    Этот код работает - он обновляет страницу, встречал не раз.
    window.location.reload() все-таки гораздо красивее...

    Запостил: elCreator, 20 Декабря 2010

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

    • мда)
      Ответить
      • зря вытер, так оно и есть
        Ответить
        • тащемто я там написал про кеш, но ведь это зависит еще от того, что вернет сервер на if-modified-синс итд
          Ответить
          • ну это нас не интересует пока, главное что reload() перегрузит документ, а assign() нет. а детали уже от вендора зависят.
            Ответить
    • Это не говнокод, а рекурсивный метод псевдорекурсии, который рекурсирует рекурсию через рекурсивированный location.href. Люди прочитавших, сойдут с ума.
      Ответить
      • НЕ ПЫТАЙТЕСЬ ЧТО-ТО PEKYPCN
        Ответить
      • Прикол получился, прям в лучших традициях башорга (про рекурсию имеется ввиду )

        Короче пишу библиотеку с хуком. Естественно по ходу дела баг за багом, надоело клацать по кнопке отладка, поставил в настройках just-in-time debugging опцию "Attach without confirmation", нормально, удобно... В конце-концов вроде основной код заработал, финальный аккорд - инжект в winlogon. Поснимал комменты, запускаю.
        Красота, чудненькое такое окошко "привет из винлогона" тут всё и обламывается.
        Моментально вылазит Оля и, чего и следовало ожидать, зависает, пытаясь приаттачится к нему-родимому. Всплывает ещё одна Оля, чтоб спасти ту Олю, которая упала первой, тоже падает, история повторяется и панель задач плавно заполняется кнопками с красной кляксой, на фоне этого беспредела злобно ухмыляется предательский message box, клава не работает, ужос... Потянулся уже к ресету, тут первая Оля наконец раздуплилась, и еле успела матюкнутся "Debugged program was unable to process exception", получился красивый такой bsod с надписью windows logon process вперемешку с иероглифами. Апофеоз Винда потом загрузилась со второй попытки
        Ответить
    • а еще улыбнуло краткое <script>
      Ответить
      • Кстати, в IE возможно ещё <script language="VBScript" type="application/vbscript">
        В других браузерах альтернатив Javascript я пока не видел. У кого-нибудь есть примеры?
        Ответить
        • Тысячи их. От стандартного ПХП до <script language="GovnoScript" type="application/gvscript">
          Ответить
          • Пруф работающей реализации в студию!
            Ответить
            • Так тот сайт, где ты сейчас сидишь содержит овер найн фаузент этих пруфоф. Правда не всегда работающих...
              Ответить
        • IE "собственный язык" не помог, зачем он другим?
          Ответить
          • Наличие второго языка в IE полезно тем, что на VBScript можно написать перенаправлялку на сайт мозиллы/оперы/хрома/чего-нибудь ещё даже без ифов. Помните http://govnokod.ru/4923 ?
            Ответить
            • Анонимус не забывает. Только зачем для этого использовать ВБ?
              Ответить
              • SPECIAL FOR IE :D
                Ответить
              • Чтобы на другом браузере точно не сработало, даже если включена маскировка под ИЕ.
                Ответить
                • кондишенал комментс рулят
                  а в js if (document.all) :)))

                  писать на vbs -- физически больно
                  на javascript, впрочем, тоже
                  Ответить
                  • Как-то вы не так делаете, что вам на javascript больно
                    Ответить
                    • да, я всего лишь стараюсь писать легко читаемый, объектно-ориентированный, поддающийся легкому рефакторингу и тестируемый код. Все эти пункты на JS или слабо выполнимы или почти не выполнимы (про всякие gwt мы не говорим).

                      Я конечно понимаю, что в мире веб-дева так делать не принято, но я все таки привык:(((

                      хотя если выбирать из vbs VS js, то конечно я скажу js
                      Ответить
                      • Ну, в жс не такой ооп, как у других, надо им пользоваться, больно не будет, честно )
                        Ответить
                        • а кто-то пользуется?

                          есть хоть один крупный проект на javascript с использованием ооп? Что бы был полиморфизм там, наследование, и прочие баззворды?
                          Ответить
                          • Насчёт полиморфизма — там сплошной полиморфизм, когда объекты являются простыми ассоциативными массивами (или наоборот, кому как нравится)..
                            Наследование в жс принято на прототайпах. Ну, извиваются, конечно, делая "как настоящее", но потом становится больно, наверно.. Потому что костыль (хотя я так не делал, поэтому это мои додумки, если что)
                            А что такое баззворды?)
                            Ответить
                            • 1) причем тут полиморфизм? Я говорю о двух имплементациях одного интерфейса
                              2) технически -- да. Я спросил -- где это используется. Пример)

                              баззворды -- модные слова))

                              короче: мне не нравится, что класс это функция. Мне не нравится что по этому класс я должен писать как function. Мне не нравится, что по этому же приватные я пишу как var, а публичные как this.bla =, мне не нравится вытекающая оттуда чехорда со словом this, мне не нравится, что нет статической типизации, что почти невозможно нормально юнит-тестировать (даже пхп можно), писать крупные проекты на JS я бы не стал
                              Ответить
                            • объект это не ассоциативный массив

                              а полиморфизмом почему-то пытается пользоваться каждый дятел, случайно узнав про конструкцию for...in
                              Ответить
                      • я не осилил JS, я не осилил JS, я не осилил JS, я не осилил JS, я не осилил JS, я не осилил JS, я не осилил JS, я не осилил JS, я не осилил JS, я не осилил JS, я не осилил JS, я не осилил JS, я не осилил JS, я не осилил JS, я не осилил JS, я не осилил JS.
                        Ответить
                        • сочуствую)
                          я осилил, и потому и говорю что язык не очень-то удобный для серьезной разработки)

                          то, что я не осилил -- я обычно не обсуждаю, что бы не выглядеть дурачком)
                          Ответить
                        • Собиритесь с силами и осильте.))
                          Ответить
                      • Между прочим, js сам по себе, достаточно простой, но в сочетании со всякими flash и серверными приложениями образует неплохой и достаточно мощный конгломератик.
                        Ответить
                        • зачем JS флешу? Внутри флеша (тоже костыльная технология кстати) есть AS. Разве что что бы флеш с HTML дружить динамически))

                          а про сервер вообще не понял: Вы про ajax?))

                          я вообще не про то говорил: писать на javascriptе крупные приложения неудобно. Вот и все)
                          Ответить
                          • > Разве что что бы флеш с HTML дружить
                            > Вы про ajax?))
                            именно
                            --
                            Писать крупные приложения, вообще-то да, простого тут мало...
                            Но у нас под брюхом есть страна волшебников - Китай, а чуть подальше - Индопакистан, их много, байтов на всех не хватит. Так что, выход есть - развиваем управление голосом...
                            Ответить
                      • ИМХО JS прям отличный язык. Надо смерится с тем сто не ООП а функциональный и многое пройдет.
                        Да ООП кривое насквозь пых со своим кривым ООП это просто мечта по сравнению с JS и это факт

                        так не надо юзать слабые сторноы языка нет ООП в Js ну и нах.

                        в си тоже нет и никто же не плюется а те ко плюется пишут на си++ .
                        Js очень удобный простой язык с множеством возможностей.

                        Все это я сказал к тому, что качества языка не зависит от наличия и уровня в нем ООП. ООП это лишь парадигма программирования и причем не единственная.
                        Ответить
                        • Вот интереса ради почитайте что такое "функциональный язык", и потом скажите -- в каком месте JS -- функциональный))))
                          Ответить
                          • Существуют различия в понимании функции в математике и функции в программировании, вследствие чего нельзя отнести Си-подобные языки к функциональным, использующим менее строгое понятие. Функция в математике не может изменить вызывающее её окружение и запомнить результаты своей работы, а только предоставляет результат вычисления функции.
                            function (a)
                            {
                            a+=1;
                            }

                            И в тоже время a=1; test(a); alert(a);

                            переменная а не будет изменена.

                            по ссылке передаются только объекты и их можно изменить. Но мы то знаем что и как работает. Передается адрес массива в памяти и этот адрес нельзя изменить

                            Единственное что можно сказать против того что JS не функциональный что можно сохранять результаты в глобальных перменных.

                            Но также можно смазать что JS не объектно отрепетированный потому что все что там оно такое просто не возможно использовать.

                            ИМХО все сводится к личному отношению как относится к языку JS как ООП в котором его лучше не было или как функциональному которому язык ближе.

                            Можете меня минусовать на плюсы я не дрочу.

                            Меня более интересует полемика.
                            Ответить
                            • JS похож на функциональные только потому, что его накорябал скимер.
                              но что удивительно, он не перенес на него ни самые вкусные плюшки scheme, ни осилил статическую типизацию и inference.
                              Ответить
                            • в JS нет глобальных переменных, это свойства Global доступные через замыкания
                              Ответить
            • а еще там есть msgbox "Bar", 2, "Foo" ))
              Ответить
        • плюх special for epic IE хватает и на JavaScript
          Ответить
        • плагин поставьте к браузеру, и пишите хоть на окамле
          Ответить
      • http://dev.w3.org/html5/spec/Overview.html#script
        читайте пункт 4.3, в нём пункт 5
        Ответить
    • Учите матчасть. Использование location.reload() после POST приводит к тому, что браузер спрашивает у пользователя разрешение на повторную отправку запроса. С присваиванием location.href = location.href всё проходит гладко.
      Ответить
      • ясен пень, reload() повторяет какой бы то ни было предыдущий запрос, а assign() выполняет GET
        Ответить

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