问题标签 [html5-template]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
html5-template - 在模板标签中使用无效/不完整的 html
我想为某些行制作模板,但我想知道规范是否允许省略行的封闭表格标记。如果我想遍历生成的 DOM,以下是有效的 html 吗?
还是我必须这样做?
插入不正确的 DOM 会使一些浏览器尝试纠正它。在某些情况下,它会创建封闭表和 tbody,因此遍历与原始源代码中看起来不同。这些规则是否适用于模板标签的内容?
javascript - HTML 模板和 HTML 导入 - 内部脚本不在 Firefox 中执行
我正在使用 webcomponents.js 来填充 Firefox 对 Web 组件的支持。
通过 HTML 导入加载 HTML 模板时,一旦将基于模板的自定义元素添加到主页的 DOM 中,模板中的脚本就不会执行。
它在 Chrome 中运行网站时会执行(支持原生 Web 组件)。
但是,当模板放置在主页本身中时,Firefox 和 Chrome 都会执行此类脚本。
请参阅HTML5Rocks的 Eric Bidelmann 的示例。这可以在 Chrome 和 Firefox 中运行(通过 webcomponents.js)——只要模板位于同一个 HTML 文件中。
但是,当模板文本显示时,它不会在通过 HTML 导入链接加载模板及其内容时运行。如前所述,它会加载内容,但不会在 Firefox 中执行脚本。
这是 webcomponents.js 中的错误,还是 Firefox 中的错误?任何人都有解决方法的好主意(“使用 Polymer 或 Angular”除外)?
注意 - 这是基于使用 Firefox 43 和 Chrome 47。
javascript - 模板标签 innerHTML 打破脚本标签
<tr>
我正在尝试通过包含元素的 HTML 解析器运行一串 HTML 。使用普通的 HTML 解析器,<tr>
元素会消失,因为您无法在<table>
元素之外创建它们。所以我尝试使用<template>
元素并使用innerHTML
,因为模板标签没有相同的限制并且可以<tr>
很好地创建元素。这工作得很好,我能够很好地创建元素。
但是,后来我尝试使用标签而不是表格行来做同样的事情<script>
,但是当模板添加到正文时,脚本标签不会运行。
但是,如果我能够创建一个脚本标签并将其附加到模板中,它就会起作用。
有谁知道为什么innerHTML
对模板使用中断脚本标签(样式标签也可以使用这种方法正常工作)?
javascript - HTML中“模板”标签、“内容”标签和自定义元素标签之间的区别
我开始学习网络组件和聚合物。我知道有一些机制可以将内容与呈现分开,这对于动态呈现内容很重要。我还理解“内容”标签通过选择需要呈现的内容(例如,某些 HTML 标签或 id 或类等中的内容)来帮助实现这一点。但是,我觉得模板标签的使用也是为了将内容与展示分开,自定义元素标签的使用也是如此,而展示/渲染完全由 JavaScript 负责。
但是我们有 3 种不同类型的标签,它们都在做同样的事情:以更结构化的方式定义内容以便于呈现。我们可以将它们的一些机制组合成更少的标签吗?
如果能够解释模板标签、内容标签和自定义元素标签的作用,与 Web 工程中遵循的编程习惯和设计模式相关,那就太好了。
html - html5 模板标签:内容访问的后备
我在 webkit 浏览器 (JavaFX WebView 2.2) 中使用模板标签来存储我可以克隆并附加到文档主要部分的元素。
但是,我无法使用templateElement.content(HTML5 标准)访问其内容。相反,我使用 jQuery 通过选择器“ #templateElement div ”获取模板 TAG 中的元素。
似乎还没有完全支持模板标签(内部脚本也运行),尽管它的内容没有呈现。
我担心的是,当模板标签得到支持时,获取其内容的方式会中断,我的页面将停止工作。
无论未来的实现发生变化,获取模板内容的推荐方法是什么?
HTML:
JavaScript:
编辑
我认为 jQuery 将无法自动处理这个问题,即使在未来也是如此,因为模板“innerHTML”被故意路由到内容,因此 DOM 无法访问它(因此没有选择器意外地触及它)。
javascript - 如何让导入的css字体/图标对shadow dom中的元素产生影响?
假设我想使用 shadow dom 创建自定义元素。模板中的某些元素在链接的 css 文件中指定了类名。现在我想让 css 规则对元素产生影响。但由于 shadow dom 样式边界,我无法做到这一点。
你看,fa-search
是在 font-awesome css 文件中定义的一个类,我如何设置<i>
元素的样式?
html - 中的外层 HTML 行为
Given this <template>
:
<template id="my-template">
<h1 id="h">Hello!</h1>
</template>
And JS:
var t = document.query
Given this <template>
:
And JS:
It's interesting that it works in FireFox and Edge but in Chrome outerHTML
requires a parent element, otherwise it throws error in console (https://chromium.googlesource.com/chromium/blink/+/master/Source/core/dom/Element.cpp#2528):
See https://jsfiddle.net/q5fmn186/11/
My question is, is Chrome behavior the correct one? Should setting outerHTML
not work in <template>
on direct children? Why aren't the other web-browser treat it like an error?
The other web browsers won't treat it like an error because they are following the DOM Parsing and Serialization W3C Candidate Recommendation (which is not a standard yet):
On setting [outerHTML], the following steps must be run:
- Let parent be the context object's parent.
- If parent is null, terminate these steps. There would be no way to obtain a reference to the nodes created even if the remaining steps were run.
- If parent is a Document, throw a DOMException with name "NoModificationAllowedError" exception.
- If parent is a DocumentFragment, let parent be a new Element with body as its local name, the HTML namespace as its namespace, and the context object's node document as its node document.
- Let fragment be the result of invoking the fragment parsing algorithm with the new value as markup, and parent as the context element.
- Replace the context object with fragment within the context object's parent.
The <template>
's content
is of type DocumentFragment (step 4) but it is treated (in this situation) as a Document (step 3) by Chrome and Safari.
Given this <template>
:
<template id="my-template">
<h1 id="h">Hello!</h1>
</template>
And JS:
var t = document.query
Given this <template>
:
And JS:
It's interesting that it works in FireFox and Edge but in Chrome outerHTML
requires a parent element, otherwise it throws error in console (https://chromium.googlesource.com/chromium/blink/+/master/Source/core/dom/Element.cpp#2528):
See https://jsfiddle.net/q5fmn186/11/
My question is, is Chrome behavior the correct one? Should setting outerHTML
not work in <template>
on direct children? Why aren't the other web-browser treat it like an error?
The other web browsers won't treat it like an error because they are following the DOM Parsing and Serialization W3C Candidate Recommendation (which is not a standard yet):
On setting [outerHTML], the following steps must be run:
- Let parent be the context object's parent.
- If parent is null, terminate these steps. There would be no way to obtain a reference to the nodes created even if the remaining steps were run.
- If parent is a Document, throw a DOMException with name "NoModificationAllowedError" exception.
- If parent is a DocumentFragment, let parent be a new Element with body as its local name, the HTML namespace as its namespace, and the context object's node document as its node document.
- Let fragment be the result of invoking the fragment parsing algorithm with the new value as markup, and parent as the context element.
- Replace the context object with fragment within the context object's parent.
The <template>
's content
is of type DocumentFragment (step 4) but it is treated (in this situation) as a Document (step 3) by Chrome and Safari.
angular - 在angular2中使用纸质数据表
关于在我的 Angular 2 应用程序中使用纸质数据表( David Mulder 的纸质数据表),我一直在苦苦挣扎。
我面临的问题在数据表问题中进行了描述: 关于在 Angular 2 应用程序中使用表的问题已打开
基本上,在 angular2 中使用聚合物未记录的 dataHost 属性时会得到不正确的值。我尝试了几个角度的解决方案,但我无法使它们中的任何一个完全起作用:1)我试图找到一种方法来制造一种可以为我包裹桌子的聚合物元件,我试图从外面给它提供桌子的防御元素(作为有效子元素),然后将其从那里移除并将其重新添加到元素本地 dom。dataHost 的问题仍然存在,我什至发现 David 自己过去曾报告过这个问题(所以我猜我的解决方案无法正常工作,原因与导致 David 代码失败的原因相同) 关于将元素添加到 localdom 的问题数据主机 2)在我在大卫建议使用的问题开头发布的问题页面中。由于一个新的原因,这不起作用,这个dom-bind内部的内容甚至没有放在dom中,我想我可以将这与angular2以他的“自己的方式”读取模板标签并评论它们的事实联系起来如果它们没有任何意义(例如 [ngIf] 属性)。
我真的很感谢解决方案 1 或 2 或其他解决方案的帮助(我找不到可能在 angular 2 中工作的功能齐全的材料设计表,所以如果有一个我不知道它也是一个选项)
非常感谢您的帮助!:)
- - - - - - - - - - 更新 - - - - - - - - - - - - - - -
到目前为止我尝试过的一些代码示例:
这是我尝试实现表格包装器的方式:
同样重要的是,使用表的代码位于某个组件中,在该组件中,我将数据属性定义为公共属性,因此我可以将其数据绑定到表数据(我总是需要在我的组件,并且总是需要从组件传递参数和数据,如果有替代方法可以使用也可以与解决方案一起使用的绑定,那么它也很好