javascript - Firefox 中的 shadow dom <slot> 标签

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

有没有办法让 shadow 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>";
  }

最佳答案

您可以使用库来填充名为 shadydom 的 Shadow DOM“v1”规范.

在使用 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>

var div = document.querySelector('#RootDiv')
div.attachShadow( { mode: 'open' } )
   .innerHTML = 'This is the content:<slot></slot>'
<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>

关于javascript - Firefox 中的 shadow dom <slot> 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41568784/

相关文章:

javascript - 分割文档并插入为多个的转换

javascript - 如何在 rethinkdb 中单独剥离数组的元素?

reactjs - lit-element 和 React 之间的主要区别

javascript - 如何获取 Polymer/Web 组件中 Canvas 上单击/点击的坐标(在滚动容器内时)

Polymer/Lit 元素,当父组件修改属性时,子组件不会重新渲染

javascript - ShadyCSS polyfill 无法正确处理 Edge 中的 CSS

web-component - 用于约束验证的自定义 Web 组件表单元素

javascript - 如何使用 Onsen UI 操作 DOM

css - SVG shadow-root 已关闭

javascript - 如何使用自定义参数让预先输入填充我的搜索栏?