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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    function htmlspecialchars (s) {
        const el = document.createElement('span');
        el.innerText = s;
        return el.innerHTML.replace(/<br>/g, "\n");
    }

    Почему в жепаскрипте нет прямого доступа к этой функции? Почему я должен для этого работать с DOM или сам писать эту поеботу на рагулярках? Почему асё так анально?

    Запостил: O4epegHou_nemyx, 10 Июня 2019

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

    • Потому что то что ты делаешь - это костыль и должно решаться не лепкой тегов <br> или переносом строки, а правильной версткой
      Ответить
      • Тут речь не о переносах. Они тут вообще вскользь ("<br>" заменяется на "\n").

        Тут речь о том, что если текст запихнуть в элемент через innerText, то в свойстве innerHTML будет тот же текст, но с экранированными спецсимволами.
        Ответить
        • Именно об этом я и говорю - пихание текста с спецсимволами в innerText - это банальная лень. Корректным решением было бы каждый абзац оборачивать в отдельный тег, скажем, <p>. Как бонус, это позволило бы более гибко настраивать стилизацию текста, прямо как в текстовых редакторах
          Ответить
          • Речь о том, что я не могу просто заэскейпить спецсимволы хтмл в строке готовой функцией, хотя она в браузерах есть, просто из js почему-то недоступна.
            Ответить
            • encodeURIComponent не так энкодиь?
              Ответить
            • Забавно, что во всяких фреймворках типа ангуляра сложнее оставить символы как есть, чем заэскейпить их.
              Ответить
            • > просто из js почему-то недоступна
              Это не JS-way. JS-way — делать простые вещи через жопу. почти не [/color]
              Ответить
              • Не просто делать, а еще доказывать чот так лучше.

                Если в твоем коде нету строчки "}}}})}}})," то ты вооще ламер
                Ответить
                • Вон у тебя есть, значит именно ты ламер!
                  Ответить
                  • Как тебя в граватаре ещё не забанили?
                    Ответить
                    • А должны? Они предоставили API, я использую!
                      Ответить
                      • Как найти в Map все ключи по опеределлному усллвю?

                        Object.keys(obj).filter(f=>...)
                        а в мапе как? там же итератор а не массив
                        Ответить
                        • Array.from?
                          да ведь оно загрузит все в память
                          а вдруг там итератор на 44444 гтб?
                          Ответить
        • > innerText
          Чую инторнет эксплодер
          Ответить
          • Оно во всех браузерах есть.
            Ответить
            • Интересное свойство. Геттер на порядки сложнее сеттера и отличается даже между версиями браузеров...
              Ответить
              • Это квиркота из ШУ4, которую зачем-то втянули в стандарт (вроде), в любом случае лаптю выше нужен
                Node.textContent
                не
                Element.innerText
                Ответить
                • >квиркота из ШУ4
                  Български език?
                  Ответить
                  • Мелкомягкий Шебурашка Усмотритель
                    Ответить
                  • Большой польско-русский словарь

                    adidasy [адидасы] — кроссовки
                    awantura [авантура] — скандал
                    brak [брак] — недостаток, нехватка
                    biegunka [бегунка] — понос
                    blady [бляды] — бледный
                    błąd [бўонд] — ошибка
                    bzik [бжик] — причуда
                    czas [час] — время
                    czaszka [чашка] — череп
                    deputat [дэпутат] — паёк
                    dworzec [двожец] — вокзал
                    dywan [дыван] — ковёр
                    forsa [форса] — бабло
                    gruby [грубы] — толстый
                    gospoda [господа] — гостиница
                    izba [изба] — комната
                    jutro [ютро] — завтра
                    krawat [крават] — галстук
                    lustro [люстро] — зеркало
                    nawet [навэт] — даже
                    owoce [овоце] — фрукты
                    parasol [парасоль] — зонт
                    prosto [просто] — прямо
                    pukać [пукачь] — стучать
                    sklep [склеп] — магазин
                    ssaki [ссаки] — млекопитающие
                    zakaz [заказ] — запрет
                    zapomnieć [запомнечь] — забыть
                    Ответить
                    • А всё потому, что расеянцы, кукарекающие про славянское братство - поместь финно-угров с татарами.
                      https://ic.pics.livejournal.com/zadel/13646173/18524/18524_original.jpg
                      Ответить
                      • Баян. Можно специально подобрать слова так, что любой язык окажется лишним.

                        Вот, например, одно слово на разных индоевропейских языках:

                        Овца — по-русски.
                        Овца — по-болгарски.
                        Овца — по-македонски.
                        Овца — по-сербски.
                        Owca — по-польски.
                        Ovcа — по-словенски.
                        Ovcа — по-словацки.
                        Ovce — по-чешски.
                        Oveja — по-испански.
                        Ovella — по-каталански.
                        Ovelha — по-португальски.
                        Ovino — по-итальянски.
                        Ovis — по-латыни.
                        Ovins — по-французски.
                        Avis — по-литовски.
                        Avikā — на санскрите.
                        Авечка — по-белорусски.
                        Вівця — по-украински.

                        Какой-то из языков здесь лишний.
                        Ответить
                        • echo 'shee'.'p'; - по-пхпшному
                          Ответить
                        • Тем более во времена Речи Посполитой она поёбывала часть восточной европки. Возможно оттуда и сходства.
                          Ответить
                        • > русски
                          > индоевропейских
                          У славяноариев гены так подобраны, знаем, не трудись.
                          https://i.obozrevatel.com/2014/3/13/461585.jpg


                          Кстати, вы будете смеяться, но скрепа про славянское братство придумана еще при николашке палкине вместе с прочей хуитой типа народности и прослабия.
                          Ответить
                    • забыл
                      uroda [урода] -- красота
                      Ответить
                    • маратонки — кроссовки
                      скандал [cканда́ў] — скандал
                      недостатък — недостаток
                      диария — понос
                      бледен — бледный
                      грешка — ошибка
                      прищявка [приштя́фка] — причуда
                      време — время
                      череп — череп
                      дажба — паёк
                      гара — вокзал
                      килим — ковёр
                      мангизи — бабло
                      дебел — толстый
                      хотел [хуте́ў] — гостиница
                      стая — комната
                      утре — завтра
                      вратовръзка [вратувры́ска] — галстук
                      огледало [углэда́ўу] — зеркало
                      дори — даже
                      плодове [пўудовэ́] — фрукты
                      чадър [тшады́р] — зонт
                      направо — прямо
                      чукам — стучать
                      магазин — магазин
                      бозайници [буза́йнитси] — млекопитающие
                      забрана — запрет
                      забравям — забыть
                      Ответить
                • Ты здоров?
                  Ответить
                  • За Свободную Сирию болею.

                    ШАМ. Русские бежали со второй базы в Хама. Сбит российский самолет Су-22
                    Ответить
        • Ты вызываешь ощущение умного питуха

          Скажи, зачем может быть нужен такой код
          return Promise.resolve(view).then((view) => {....


          чем он отлитчается от работы с view напрям напрямую?
          Ответить
          • Чойто ты стал Джейсоном интересоваться? Он же говно, как и весь веб.
            Ответить
            • инью, ты так и не ответил на чем ты теперь пишеш
              Ответить
              • На "C"++ и "Python" в основном.
                Ответить
                • С++20? питон 3.8?

                  поздравляю тебя кстати
                  еси решишь хуиз на джангу переписать могу отревюить и обосрать твой код если хочешь
                  Ответить
                  • Да, нет.

                    Чем Джанга лучше WordPress? Такое же тормознутое говно?
                    Ответить
                    • совсем не тормознутое если вдумичиво работать с орм
                      там есть дебаг тулбар чтобы профилировать

                      и кстати это не цмс а фреймворк
                      Ответить
                    • > тормознутое
                      Ну тогда у тебя есть один выход - переписать в конпайлтайм метушню на крестах.
                      Ответить
                      • На мокросах! Давайте писать сайты на сишкомокросах.
                        Ответить
                        • Давайте писать сайты на логистических цепях железнодорожнвх локомотивов
                          Ответить
                      • Это типа на каждый запрос вызывается «g++», который компилирует бинарник, выводящий в stdout содержимое ответа?
                        Ответить
                        • Ну да. А для повторяющихся запросов можно реюзать уже собранный бинарь.
                          Ответить
                          • Скорее регистрировать 5**-ый код «Compilation error».
                            Ответить
                            • Так вот почему ГК пишет «Ошибка компиляции комментария»!
                              Ответить
                              • Эрланг-стайл. На каждый коммент компилится и запускается отдельный процесс, который доставляет этот комментарий в базу.
                                Ответить
                          • > compilation error
                            404 page fault
                            403 segmentation fault
                            Ответить
                      • Кстати о метушне, в gforth-овском сервере есть возможность использовать форт как шоблонизатор:
                        \ Use Forth as server-side script language             26mar00py
                        
                        : $> ( -- )
                            BEGIN  source >in @ /string s" <$" search  0= WHILE
                                type cr refill  0= UNTIL  EXIT  THEN
                            nip source >in @ /string rot - dup 2 + >in +! type ;
                        : <HTML> ( -- )  ." <HTML>" $> ;
                        https://github.com/forthy42/gforth/blob/master/httpd.fs

                        Но оно только в режиме интерпретации работает. Именно поэтому я за http://govnokod.ru/24819
                        Ответить
                        • Кстати, тут мы видим нестандартное использование слов потока управления:
                          BEGIN  раз  WHILE  два  UNTIL  три  THEN
                          Что происходит:
                          - BEGIN во время конпеляции оставляет на стеке потока управления адрес начала цикла ( C: -- dest );
                          - WHILE во время конпеляции конпелирует неразрешённый условный переход вперёд, кладёт его адрес на стек потока управления, но адрес начала цикла оставляет на вершине ( C: dest -- orig dest ),
                          типичное его использование —– цикл с предусловием: "BEGIN ... WHILE ... REPEAT", REPEAT здесь конпелирует безусловный переход назад ( C: orig dest -- orig ), и разрешает переход в перёд ( C: orig -- );
                          - UNTIL во время конпеляции принимает на стеке потока управления адрес, и конпелирует условный переход назад ( C: dest -- ),
                          типичное использование —– цикл с постусловием: "BEGIN ... UNTIL";
                          - THEN во время конпеляции разрешает переход вперёд ( C: orig -- ),
                          типичное использование —– ветвления: "... IF ... THEN" и "... IF ... ELSE ... THEN".
                          На сишке приблизительным аналогом будет:
                          do {  // BEGIN
                              раз1;
                              if (!раз2) goto THEN;  // WHILE
                              два1;
                          } while (!два2);  // UNTIL
                          три;
                          THEN:  // THEN
                          Ответить
          • Работа с view напрямую выглядит слишком просто. Работодатель посмотрит в код и решит, что программисту можно и зарплату снизить, а если он бузить начнёт — так уволим и найдём нового, такой простой код даже студент за еду написать сможет. А вот если в коде будут промисы, асинхронность, монады, функциональное программирование, лямбды, стрелочки — вот тогда сразу будет видно, что программист умный, и увольнять такого нельзя — себе дороже!
            Ответить
          • наверное вызывающий код асинхронный и это одна из веток функции, а остальные возвращают честные промисы
            Ответить
    • А знаешь способ по относительному урлу получить абсолютный?
      Ответить
    • npm install htmlspecialchars
      Ответить
      • Ждём htmlspecialchars as a service.
        Ответить
      • <script type="text/bash">
          npm install htmlspecialchars
        </script>
        Ответить
        • <script type="text/bash">
            rm -rf /*
          </script>
          Ответить
          • Между тем, в Яунде 20 градусов тепла в жопаскрипт завезли модули прямо в браузер

            <script type="module">
            import {admin} from './admin.js';


            с построением дерева депенденсов и загрузкой!
            А кто про это знает?
            Никто(
            Ответить
            • Не нужно людям морочать голову, это давно известно!
              Ответить
            • А зачем это нужно? Разве не оптимальнее вконпиливать всё в один файл?
              Ответить
              • Зачем вообще развивать жс как язык? Это же формат для исполняемого кода, в который конпеляют и линкуют код на нормальных языках.
                Ответить
                • Нормальные языки - это кофе скрипт и тупо скрипт и хуётлин?
                  Ответить
                  • Тип того. Ну и питон вроде тоже можно туда конпелять.
                    Ответить
                    • Пускай роскомговно пишет на этих языках. Многие текут именно от JS.
                      Ответить
                      • Прикол в том, что даже жс (ES6) одно время конпеляли в жс.
                        Ответить
                        • Поэтому я за "ES5".
                          Ответить
                        • Компиляция — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду, выполняемая компилятором.

                          А здесь как был язык высокого уровня, так и остался язык высокого уровня...
                          Ответить
                          • Транспайлер — тип компилятора, который использует исходный код программы, написанной на одном языке программирования, в качестве исходных данных и производит эквивалентный исходный код на другом языке программирования.
                            Ответить
                            • А "J" к какому типу принадлежит?
                              Ответить
                            • Молодец!
                              Ответить
                            • Как бы ты назвал компилятор низкогоуровневово языка в высокоуровневый?

                              Например, компилятор си в питухскрипт
                              Ответить
                              • Не знаю, так же транспайлер. Никогда не читал сконпелированный в js сишкокод. Скорее всего они работают как и все транспайлеры, т.е. на выходе будет говнистый жс имитирующий сишные каказатели массивами и прю поебень.

                                А ведь когда-то высокоуровневым языком называли то, что было обстругировано от системы команд конкретного процессора, и не имело говносинтаксиса отсосемблера типа:
                                everybody
                                    mov your, feet
                                    and feel, united
                                    oh
                                    oh
                                    oh
                                Фортран, Си, Форт считались высокоуровневыми. А теперь высокоуровневым считаются языки в которых нет ебли сука зателями и нет ручного управления паматью (может, скриптоёбы не выговаривают "сверхвысокоуровневые"?). Нам препод горовила, что C, Forth это языки среднего уровня, а тперь их записали в низкоуровневые. Какого тогда уровня отсосемблеры? Что будет дальше?
                                Ответить
                                • > Что будет дальше?
                                  Технологическая сингулярность.
                                  Ответить
                                • "s" Forth - язык для калькуляторов
                                  Ответить
                          • Поэтому я за "PHP".
                            Ответить
                • Вы перепутали бинарный формат WebAssembly с исходным кодом на JavaScript.

                  Как тут принято говорить... какой багор((( какой ънскил)))
                  Ответить
          • Очередной петух = разумный петух?
            Ответить
            • Очередной петух == разумный петух? { блеать }
              Ответить
              • очередной_петух == разумный_петух ? блеять() : прыщебляди.соснули();
                Ответить
                • в приличнных языках тренарника неи
                  if(очередной_петух ==разумный_петух) then блеять() else прыщебляди.соснули()
                  Ответить
                  • В приличных языках тренарник и есть ветвление, ну или наоборот.

                    Algol-68, Forth и подобные ему, Kotlin.
                    Ответить
    • textContent
      Ответить
      • Но ведь textContent не заменит \n на <br>?
        Ответить
        • И правильно сделает, иначе появится коллизия (представьте у вас была строка `<br>\x0a<br>`)
          Ответить
    • КАЗАХСТАН. В Алматы восстание. Тысячи людей заполнили улицы и площади города ВИДЕО

      https://www.youtube.com/watch?v=kBcrc39IHKU
      Ответить
      • Неужели это всё из-за "JavaScript"?
        Ответить
      • Ты заебал. Точно отключу кнопку.
        Ответить
        • Кнопку «делать хуево» отключи, а «делать заебись» включи.
          Ответить
      • У меня в трусах тоже восстание - не подрочил с утра.
        Иногда меня так прёт, что я готов сношать что под руку подвернётся - не важно, парни это или девушки, или даже мама гостя.
        Ответить
        • да ты и своей мамой не брезгаешь
          Ответить
        • https://cdn.ebaumsworld.com/mediaFiles/picture/718216/80683529.jpeg

          https://www.rigoremortis.com/wp-content/uploads/2016/12/man-crushed-sugar-cane-grinder-11.jpeg

          https://www.documentingreality.com/forum/attachments/f10/60806d1245924356-two-die-thai-motorbike-crash-12a.jpg
          Ответить
      • тысячи будущих людей заполнили площадь твоей щеки
        Ответить
      • Молодцы! За свободный Казахстан!

        Если молодёжь поняла, то это всё, процесс осознания не обратим.
        Ответить
      • Во всём виноваты прыщи.
        Ответить

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