Javascript HTML规范在哪里声明a<;模板>';s的内容物是惰性的?
“模板的内容”(通过Javascript HTML规范在哪里声明a<;模板>';s的内容物是惰性的?,javascript,html,html5-template,Javascript,Html,Html5 Template,“模板的内容”(通过HTMLTemplateElement.prototype.content访问)存储在与主文档以外的其他文档相关联的文档片段中 所以,因为temp.content.ownerDocument!=文档,这是可以的: <template id="templ"> <script>console.error('This does not execute!');</script> </template> 换句话说,脚本仍然是主文档的
HTMLTemplateElement.prototype.content
访问)存储在与主文档
以外的其他文档相关联的文档片段
中
所以,因为temp.content.ownerDocument!=文档
,这是可以的:
<template id="templ">
<script>console.error('This does not execute!');</script>
</template>
换句话说,脚本
仍然是主文档
的一部分,
这通常意味着它会执行
规范解释了通过以下途径访问的DocumentFragment
.content
,它没有说明这个具体的,实例化的
实例,其关联的文档
是主
文档
但不执行
规范是否确切地解释了为什么这个
不是
执行?如果它确实属于某个组织,它如何被排除在执行之外
文档
(我意识到不执行脚本很有用。这是一个
关于规范的问题,而不是关于
或
浏览器中的行为是否合适。)
嗯,在模板上有一个元素描述:
注意:模板提供了一种方法,用于声明惰性DOM子树,并对其进行操作,以实例化具有相同内容的文档片段
(我的重点)然后在以下段落(我的重点)中对其进行相当详细的阐述:
文档文档的适当模板内容所有者文档是通过以下算法返回的文档:
如果文档不是通过此算法创建的文档,请运行以下子步骤:
如果文档还没有关联的惰性模板文档,则运行以下子步骤:
让新文档成为新文档(没有浏览上下文)。出于上述步骤的目的,这是“由该算法创建的文档”
如果文档是HTML文档,则将新文档也标记为HTML文档
让单据关联的惰性模板单据成为新单据
将文档设置为文档的关联惰性模板文档
退货单
在多个地方提到惰性,谈论它如何作为一个不同的文档存在。这可能是我的问题所允许的最接近的答案。我所做的关于temp.children
的断言实际上是不正确的,因为我的问题使用了一个用HTML创建的模板,但实际上我是说,如果你是用JS创建的,为什么不使用一个文档呢fragment@chiliNUT:对。我只是用JS来测试我对元素行为的理解。并且没有意识到动态创建时行为的不同。
templ.children[0].tagName == 'script'
templ.children[0].ownerDocument == document