해결책을 찾았고 공유 할 것으로 생각했습니다. 아직 모든 브라우저와 호환되지는 않을 지 모르지만 그럴 가능성은 있습니다.
제 스크립트에는 내 사용자 정의 html 태그를 처리하는 iffe/monad가있어 템플릿으로 그림자 뿌리와 내용을 내용으로 만듭니다. 모나드에 대한 인수 중 하나는 내 맞춤 태그와 일치하는 노드 배열입니다. 이들을 반복하면서, 클로저에서 생성 된 섀도우 루트를 사용하기 위해 특정 속성 변경을 감시하는 MutationObserver를 만듭니다.
(function (tags, template) {
Array.prototype.forEach.call(hexagons, function (v, k) {
var shadow = v.createShadowRoot();
shadow.appendChild(template.content.cloneNode(true));
/* mutation observer */
var observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
shadow.querySelector('.seconds')
.innerText(
mutation.target.getAttribute(mutation.attributeName)
)
});
});
observer.observe(v, { attributes: true, attributeFilter: ['bgcolor'] });
}
);
}(document.querySelectorAll('time'), document.querySelector('template#time')));
위의 내용은 Chrome 및 Firefox 최신 버전에서 작동합니다. 나는 mroe 브라우저 친화적 인 솔루션을 계속 찾고있을 것입니다.
저는 웹 구성 요소에 상당히 익숙합니다. 마크 업에 전체 코드가 필요하거나 iframe과 같이 페이지가로드 될 때 게으르게로드 될 수 있습니까? 마크 업에서 코드를 로컬에서 사용할 수 있으면 허용되어야합니다. 그러나 공유 유틸리티가 다른 도메인의 웹에로드되는 경우 허용되지 않을 수 있습니다. 어때요? (http://jsfiddle.net/) 주위에 놀기 위하여 어떻게? – sarbbottam
나는 [이 바이올린] (http://jsfiddle.net/rkichenama/Vg4gG/3/)에서 기본적인 아이디어를 가지고있다. 호스트의 채우기 속성에 대한 변경을 감시 한 다음이 예제에서 shadowRoot 내부의 글꼴 색상을 변경하는 스크립트를 템플릿에 추가하고 싶습니다. – RKichenama