Комментарии 13
Ваши компоненты все без исключения обрушатся на попытке переноса их в другой документ (importNode() или adoptNode()), если дело будет происходить не в хроме. Да и насчёт хрома я уверен не на 100%.
Какой смысл писать о нём в комментариях?
Если автор пишет статьи на хабр — то и комментарии прочитает. Наверное.
Вы считаете, что нашли глобальный недостаток библиотеки, который ставит на ней крест?
Нет. Предлагаю подумать вам над тем, что иногда лопата — это лопата.
Давайте попробую иначе объяснить. Вот представьте, что вы пишете свою библиотеку, сделали хорошую документацию, вам она (дока) не нужна, вы и так весь АПИ отлично помните, но людям будет удобно. И вот вы выкладываете её в опенсорс, пишете статью и тут же получаете пафосный комментарий о баге. Приятно будет? Нельзя было тихонько завести ишъю? Я понимаю, что большинство исключительно использует наработки других, даже не пытаясь что-то давать взамен, но вы хоть на секунду ставьте себя на место авторов, испытывайте хоть немного благодарности (ведь вы каждый день совершенно бесплатно пользуетесь кучей таких наработок), а не тупое желание самоутвердиться типа "смотрите какой баг я сразу нашёл". Фу таким быть.
Ну, удачи.
Невозможность переноса в другой документ делает лопату лопатой? Над этим что ли я должен подумать? Вы уж либо расшифруйте, либо не несите бред.
Если в комментарии написано «хотите интересный фактик?» — это означает, что в комментарии описан интересный фактик. Не более и не менее.
А вот что по-хорошему меня поражает, так это объемы истерики, которые вы ухитрились сгенерировать в качестве реакции. Это было бы даже наверное забавно, если б не было так грустно.
С чего вы взяли, что присутствует какая-то истерика? Я уже объяснил, что нужно было сделать с этим интересным фактиком. Ишъю уже заведён или вы просто местный балабол?
С чего вы взяли, что присутствует какая-то истерика?
С того, что вы выдумали себе целую альтеративную реальность с ужасными людьми, которые даже во сне думают, как бы самоутвердиться за счёт бедных ранимых авторов опенсорса.
Если взять количество усилий, которые я потратил на изначальное замечание за k, количество усилий на ваши комментарии за m, а мои ответы за n, то k <<<<<<< n < m (количество операторов приблизительно выражает разницу). И я в этом продолжаю участвовать только потому, что люди с забавными альтернативными реальностями мне по-человечески любопытны.
Я уже объяснил, что нужно было сделать с этим интересным фактиком.
Я уже объяснил, что ваши объяснения не имеют смысла.
Ишъю уже заведён или вы просто местный балабол?
Любопытно, что за всё это время вы так и не осознали разницу между issue и интересным фактиком.
альтернативными реальностями
и в чём альтернативность? Вы действительно верите, что большинство разработчиков хоть иногда задумываются, что каждый день совершенно бесплатно пользуются огромным количеством чужой работы? Я вот уверен в обратном. Большинство ленятся даже завести ишъю, если найденная проблема не касается их лично. Утверждение, что таким образом можно хоть как-то выразить благодарность за существующий опенсорс вызывает удивление. Вот вы — ярчайший представитель. Я уже дважды предложил вам потратить каких-то пару минут и внести свой вклад, но вам лень.
не осознали разницу между issue и интересным фактиком
прекрасно осознаю разницу. Созданный ишъю — признак ответственного и благодарного разработчика, а ваш фактик — признак либо человека пытающегося самоутвердиться, либо балабола. Так кто вы? Этим вопросом я в третий раз предлагаю вам пройти на гитхаб и стать ответственным и благодарным разработчиком, а не выбирать между двумя не самыми приятными вариантами.
А расскажите, в чем именно дело? Они используют lit-element, это в нем какой-то косяк или тут что-то еще?
Тут многоэтапная фигня:
1) Хром и не-хром переносят элементы по-разному. Хром — единственный, кто оставляет у элемента всё тот же прототип, остальные (как минимум FF, но по-моему другие браузеры тоже ведут себя как FF) меняют прототип элемента как минимум однажды. Из этого, в частности, вытекает то, что в хроме кастомные элементы можно переносить между документами, не регистрируя такой кастомный элемент в новом документе. И оно будет работать, а у других — не будет. Хотя по стандарту вообще-то надо регистрировать.
2) FF, насколько я его понял (но надо учесть, что я не рыл вопрос очень уж глубоко) — сначала даунгрейдит элемент до HTMLUnknownElement, а потом апгрейдит обратно, если он зарегистрирован. То есть, прототип пару раз поменяется.
3) Ну и еще одна отдельная вишенка на торте — adoptNode() не вызывает конструктора! Оно вызовет сначала adoptedCallback(), потом connectedCallback(), и всё. Если в конструкторе происходит что-то интересное (я не уверен полностью, но в этой репе в конструкторе что-то не совсем банальное таки происходит, типа addEventListener у кнопки) — то это всё при переносе ноды перестанет работать.
Это я «случайно» обнаружил вообще мимоходом, когда ковырял html2canvas ради скриншотов страниц. Оно перед тем, как что-то делать — создаёт клон текущего документа в ифрейме. На этом-то вебкомпоненты (не эти, а мои, но разницы мало) и посыпались.
ING открывает Lion: библиотеку производительных, доступных и гибких веб-компонентов