javascript - HTML 5 模板标签(页面刷新)

标签 javascript html html5-template

我想使用 HTML 5 模板标记,但在刷新页面后出现了一些令人困惑的行为。也许我先给你看一些代码:

<!doctype html>
<meta charset=utf-8>
<title>HTML 5 - template test</title>

<template>
    <h1>This is an awesome new HTML 5 template</h1>
    <p>.. some even more awesome content .. some even more awesome content .. some even more awesome content .. some even more awesome content .. some even more awesome content</p>
</template>
<div></div>

<script>
var template = document.querySelector('template'),
    templateContent = template.content.cloneNode(true);

console.log(template);
console.log(templateContent);

document.querySelector('div').appendChild(templateContent);
</script>

实际上这按预期工作,但控制台中发生了一些令人困惑的事情。当我第一次打开页面时,它显示:

http://i.stack.imgur.com/xDJBo.png

但是当我刷新页面时,它显示了这个:

http://i.stack.imgur.com/W23YF.png

当我重复它时,我又看到了第一张图片中的东西。 我也在 jsbin 上尝试过,但我看不到这种行为: http://jsbin.com/ofotah/1

我真的不知道那里发生了什么。我使用的是 Google Chrome 版本 27.0.1453.110 (Windows)。 希望你能帮我解决这个问题。

最佳答案

这实际上与模板无关,它是 Chrome 浏览器有时会出现的怪癖。在几乎不可能重现的条件下,它会对其他元素标签执行相同的操作,但实际对象内容不会受到影响。它只是有时获取 toString() 序列化,有时获取对象序列化。

然而,正如 Andbdrew 指出的那样,模板标签仍然是一个草稿元素,我们还远未决定它应该如何正确使用或如何访问它们,所以考虑到您的示例代码如何使用它,我建议只使用 <script type="text/template">...</script>元素,并使用 document.querySelector("script[type='text/template']"); 选择它而不是使用实验元素 =)

关于javascript - HTML 5 模板标签(页面刷新),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16990169/

相关文章:

javascript - HTML 中的随机图像背景

javascript - 如何在 ul 和 li 中使用 jquery 渲染嵌套的 JSON

javascript - 如何缩小 nv.d3.js?

html - 将带有文本 "my name"的跨度放置在圆形 div 旁边

javascript - 如何使用 vanilla js 在自包含的自定义元素中剔除模板?

javascript - 我什么时候应该在构造函数或 connectedCallback 中应用模板

javascript - Facebook SDK 从 jQuery 接管 "$"- 如何阻止它?

javascript - jQuery 单击/切换显示/隐藏 div 面板

javascript - 如何更改 html 文本区域中的输入法(即外语)

javascript - HTML 导入不起作用...即使它受支持