#html #css #widget #shadow-dom #isolation
Вопрос:
У меня есть проект в разработке, который будет чем-то вроде гаджета или виджета для его загрузки на других сайтах. Это не будет Iframe, но когда я загружаю его в качестве виджета на других сайтах, возникает множество CSS-конфликтов. Я искал решение и нашел ShadowDOM. Я пробовал это для решения проблемы! но ничего не вышло!
Я ценю, если вы поможете мне в этой проблеме.
<div id="%REACT_APP_ROOT_ID%" data-plugin="%PLUGIN_ID"></div>
<script>
const widget = document.getElementById('rcroot');
widget.attachShadow({ mode: 'open' });
widget.shadowRoot.innerHTML = widget.innerHTML;
widget.innerHTML = '';
</script>
<div>
Комментарии:
1.можете ли вы изменить css, чтобы просто добавлять идентификатор везде? Нравится
#my.widget div{}
#my-widget .box{}
и т. Д. И использовать какие-то неприятные мелочи!important
здесь и там?2. @Pepo_rasta даже я так делаю. также возникнут некоторые проблемы. например, мое боковое меню будет работать со всем документом. я имею в виду, что когда я открою его, он откроется с родительского веб-сайта. из-за этого самый безопасный способ-изолировать весь проект. но вопрос в том, как я могу это сделать? и спасибо вам за ваш комментарий!
3. Стандартные веб-компоненты React и W3C не являются лучшими друзьями (из-за (своего рода устаревшего) подхода к виртуальному DOM). Ищите в блогах информацию о том, что требуется для понимания веб-компонентов