firefox中的shadow dom <slot>标签

时间:2017-01-10 12:22:26

标签: javascript web-component shadow-dom custom-element slot

有没有办法让影子dom的<slot>元素在firefox中运行?

作为一项解决方案,我目前正在使用for loop.innerHTML添加我的所有内容(见下文),但这是一种相当难看的方法。

webcomponents.js被添加为head

中的第一个脚本标记

HTML

<portfolio-container></portfolio-container>

JS

const allContent = [{
        title: "hello",
    }, {
        title: "hello",
    }];

for (var i = 0; i < allContent.length; i++) {
    shadowRoot.innerHTML += "<portfolio-item data-title='"+ allContent[i].title +"'></port-item>";
  }

1 个答案:

答案 0 :(得分:2)

您可以使用库来填充Shadow DOM&#34; v1&#34;称为shadydom的规范。

在使用Sadow DOM API之前,请从<script>元素加载 shadydom.min.js 文件。

<script src="shadydom.min.js"></script>

<div id="RootDiv">
  <span>Content</span>
</div>

<script>
   var div = document.querySelector( '#RootDiv' )
   div.attachShadow( { mode: 'open' } )
      .innerHTML = 'Content:<slot></slot>'
</script>

&#13;
&#13;
var div = document.querySelector('#RootDiv')
div.attachShadow( { mode: 'open' } )
   .innerHTML = 'This is the content:<slot></slot>'
&#13;
<head>
    <base href="https://rawgit.com/">
    
    <!--Array.from() polyfill for IE
    <script src="joshuacerbito/d6599f1c4a218e722a03514c3dbff1c2/raw/4c43e6346ca48d66344c9b35fe7381b883ec2b32/array_from_polyfill.js"></script>-->
  
    <!--Shadow DOM polyfill for Firefox and IE-->
    <script src="webcomponents/shadydom/master/shadydom.min.js"></script>

<body>
    <h4>Simple Shady</h4>
    <div id="RootDiv">
      <span>Content</span>
    </div>
&#13;
&#13;
&#13;