Простой ответ: Нет.
Веб-компоненты Не изолируйте JS.Только DOM и CSS.
Но вы можете поместить все вашего JS в ваш класс, или в модуль ES6, или в IIFE, и это изолирует его.
Но я сомневаюсь, что веб-компоненты когда-нибудь станут 100% заменой <iframe>
.И я не думаю, что они должны были быть такими.
Я не удивлюсь, если <iframe>
станет устаревшим и в конечном итоге будет удален из браузеров.
ОБНОВЛЕНИЕ
Хранение ВСЕХ кода JS внутри класса вашего компонента или внутри IIFE несколько защитит код.HTML и CSS уже помещены в песочницу внутри компонента.Если ваш код был в IIFE или в модуле ES6, то другой код должен был бы иметь доступ к исходному файлу и иметь возможность изменять его, чтобы изменить его.
Связь извне с компонентомвыполняется внешним кодом, вызывающим функции компонента или устанавливающим свойства и атрибуты компонента.
Связь между компонентом и внешней средой традиционно осуществляется путем отправки событий.Говорить напрямую от одного компонента к другому - грязный вариант, и его действительно следует избегать.Родительский код должен прослушивать события от всех своих дочерних элементов, а затем вызывать функции или устанавливать свойства / атрибуты для других дочерних элементов.
Если вы используете shadowDOM, то включающий сайт может изменять только CSS ваших компонентов.если вы сделаете определенные аспекты CSS доступными для них.Это делается либо с помощью CSS Varaibles, либо с помощью <slot>
, чтобы позволить приложению-оболочке размещать свой собственный HTML / CSS внутри вашего компонента.Это может открыть вам некоторые вещи, которые вы, возможно, не захотите.
Код, который находится в классе или во IIFE, всегда может получить доступ ко всему в DOM.Помните, что JS не имеет песочницы и может делать все, что может делать любой другой JS.Но приложению, которое может быть сложнее, хотя, возможно, и не невозможно, внести изменения в классы компонентов.Убедитесь, что ваши классы заморожены для предотвращения подклассов.
Еще одна вещь, которую нужно знать, это то, что если у вас есть кто-то еще, загружающий их веб-сайт со своего сервера, а затем загружающий файлы компонентов из вашегосервер, то у вас могут быть проблемы с CORS.Особенно, если ваш код пытается загрузить данные с помощью XHR / Fetch , тогда у вас могут возникнуть CORS проблемы .