henry_flower: A melancholy wolf (Default)
henry_flower ([personal profile] henry_flower) wrote2018-04-09 07:46 pm

Гарний бовзер файефокс

Вирішив спробувати shadow dom, про який мені пиздять > 3 років.

Намагався це зробити найбільш невибагливим способом: ув ріактовому компоненті написати

<ShadowDOM>
  <div>
    <div dangerouslySetInnerHTML={{__html: '<p>hi mom</p>'}}
  </div>
</ShadowDOM>

де ShadowDOM це якесь https://github.com/Wildhoney/ReactShadow.

Ви не повірите (я теж спочатку не вірив), але воно працює ув кроумі!

Потім я дізнаюся, що прогресивний бовзер файефокс ховає примарний дам за ебаут:конфíг. Повідомте про це дебілу користувачу попапом, еге, інакше ваша аплікація працювати не буде!!111 Тобто, залишається якийсь гооглівський поліфіл. Олрайт, втулив поліфіл--ніби запрацювало, але залишилося кілька нюансів:

  1. Прогресивний бовзер файефокс раптом почав жерти cpu так, що alt-tab у fvwm займав по 5 сек. Як відомо будь-якому школяру, уйоб компонентс то є наше майбутнє вже сьогодні.

  2. Навіщо мені примарний дам? Зе ріактовий компонент малює html, з яким іноді приходить <style>body { color: red !important }</style>, для боротьби з чим примарний дам видається ідеальним рішенням.

    Так от, отой поліфіл для файефокса додає усілякі attachShadow(), але ніяк не захищає від збуджених дизайнерів. Я розумію, що див не буває, але який є сенс у поліфіюванні такої поведінки?

  3. Хто є ті дивні люди які користуються файефоксом? Навіщо вони це роблять?

Відкотив усе назад, взяв parse5. У скороченому вигляді фільтрування стилів наразі працює так:

exports.html_sanitize = function(html) {
    let defaultTreeAdapter = parse5.treeAdapters.default
    let adapter = Object.create(defaultTreeAdapter)

    adapter.appendChild = (parentNode, newNode) => {
        if (newNode.nodeName === 'style') return
        defaultTreeAdapter.appendChild(parentNode, newNode)
    }

    let doc = parse5.parseFragment(html, { treeAdapter: adapter })
    return parse5.serialize(doc)
}
artgr: (Default)

[personal profile] artgr 2018-04-09 05:09 pm (UTC)(link)
Просто front-end зараз розвивається зі страшною силою, і кожен, хто його розвиває, розвиває його у якомусь своєму, відмінному від інших, напрямку.

А щодо React, то він, як і будь-які інші фрейморки такого розливу, дає в чомусь виграти, але в чомусь і програти. Як на мене, то дрібниці на кшталт Vue.js часто бувають куди виправданіші, ніж паровози типу Angular або React. В будь-якому разі, Vue куди швидше засвоюється.
artgr: (Default)

[personal profile] artgr 2018-04-09 05:54 pm (UTC)(link)
Я загалом по ситуації.
jurgen: (Default)

[personal profile] jurgen 2018-04-09 06:04 pm (UTC)(link)
Ну не додатком ж до гугл-пошука користуватися? гг
Опера нажаль, здохла.
jurgen: (Default)

[personal profile] jurgen 2018-04-09 06:25 pm (UTC)(link)
Ага, i почуття гумору. :))
jurgen: (Default)

[personal profile] jurgen 2018-04-09 08:34 pm (UTC)(link)
После 12й версии, а так же вивальди и прочие форки считаются уже зомби.