You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

template.content何时会返回null?求具体示例

如何让template.content返回null?

注:我曾在WHATWG仓库中提出此问题,但该议题几乎立即被关闭,理由是“这类问题更适合在Stack Overflow(SO)上提问”。

WHATWG规范中关于<template>的.content获取器说明如下:

content获取器的执行步骤为:若模板的模板内容不是ShadowRoot节点,则返回该模板内容;否则返回null。

我们可以很容易获取到非null的值:

let template = document.createElement("template");
console.log(template.content); // #document-fragment

但我找不到template.content返回null的示例,能否有人提供这样的示例?


实现示例

你可以通过HTMLTemplateElement.setHTML()方法,配合shadowRootMode选项达成这个效果。当指定该选项为"open"或"closed"时,模板的内部内容会被创建为ShadowRoot,此时访问.content就会返回null。

代码示例:

const template = document.createElement("template");
// 传入shadowRootMode选项,将模板内容转为ShadowRoot
await template.setHTML(`<p>ShadowRoot 内部内容</p>`, { shadowRootMode: "open" });

console.log(template.content); // 输出 null
// 访问ShadowRoot内容需要用template.shadowRoot
console.log(template.shadowRoot.innerHTML); // 输出 <p>ShadowRoot 内部内容</p>

原理:按照规范定义,当模板的“模板内容”是ShadowRoot类型时,.content属性会返回null,此时ShadowRoot实例可以通过template.shadowRoot属性直接访问。


内容的提问来源于stack exchange,提问作者MaximPro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:46:05