Веб-компоненты, используемые через HTML imports, инкапсулируют как Тень DOM HTML , так и Связанный скрипт.
Чтобы сузить терминологию, давайте рассмотрим, что у нас есть полимерный компонент core-ajax. Вот the code. Как вы могли видеть, он не предоставляет никакой разметки HTML вообще, инкапсулируя только сценарий.
После импорта на хост-сайта, как:
<link
rel="import"
href="https://www.polymer-project.org/components/core-ajax/core-ajax.html">
этот компонент обеспечивает возможность выполнения АЯКС вызовов без каких-либо Java-кодирования:
<core-ajax
auto
url="http://gdata.youtube.com/feeds/api/videos/"
params='{"alt":"json", "q":"chrome"}'
handleAs="json"
response='{{response}}'
</core-ajax>
выше будет загружать (так как auto
атрибут установлен) содержимого указанного URL-адреса и поместить ответ в связанную переменную response
. Другой способ общения с этим компонентом является обеспечение обработчика вместо привязки переменной шаблона для ответа:
- response='{{response}}'
+ on-core-response="{{handleResponse}}"
Можно реализовать handleResponse
функцию в данной страницы яваскрипт и это все.
UPD Хотя в настоящее время нет возможности отличить основной документ и один используемый теневого DOM, эту функцию is being discussed в течение почти трех лет в w3c mailgroups. Дискуссия далека от заключения, хотя и в таких аспектах, как «не разрешаем ли мы их полностью в авторском пространстве».
Thanks @mudasobwa! Имеется ли у сценария, который загружается через полимер, отдельный документ? Мне особенно интересно разделить контекст скриптов, аналогично запуску сценариев в разных кадрах. – Sasha
Я бы предложил вам прочитать спецификацию W3C по импорту. Нет, «document» будет таким же (и нет возможности создавать другой встроенный документ, кроме 'iframe', и я уверен, что навсегда не будет такой возможности.) – mudasobwa
Спасибо! [Этот ответ] (http://stackoverflow.com/questions/14338817/can-a-shadow-dom-secure-my-elements/14346490#14346490), по-видимому, подразумевает, что это будет поддерживаться через Shadow DOM в будущем, но мне любопытно, есть ли уже решение с другими методами. – Sasha