【发布时间】:2012-02-16 22:58:24
【问题描述】:
我正在考虑像这样在 DOM 中嵌入任意 JSON:
<script type="application/json" id="stuff">
{
"unicorns": "awesome",
"abc": [1, 2, 3]
}
</script>
这类似于将任意 HTML 模板存储在 DOM 中以供以后与 JavaScript 模板引擎一起使用的方式。在这种情况下,我们可以稍后检索 JSON 并解析它:
var stuff = JSON.parse(document.getElementById('stuff').innerHTML);
This works,但这是最好的方法吗?这是否违反任何最佳实践或标准?
注意:我不是在寻找将 JSON 存储在 DOM 中的替代方法,我已经确定这是解决我遇到的特定问题的最佳解决方案。我只是在寻找最好的方法。
【问题讨论】:
-
你为什么不把它作为 javascript 中的
var? -
@Krizz,它需要成为静态文档的一部分,然后由复杂的封装 javascript 链处理。将它存储在 DOM 中是我想要做的。
-
@Krizz 我遇到了类似的问题。我想在不执行 AJAX 请求的情况下将每个用户的数据放在不同的站点中。所以我在一个容器中嵌入了一些 PHP,做了一些类似于你上面的操作来获取 javascript 中的数据。
-
我认为您的原始方法实际上是最好的。它在 HTML5 中 100% 有效,富有表现力,不会创建“假”元素,您只需使用 CSS 删除或隐藏这些元素;它不需要任何字符编码。缺点是什么?
-
如果你的 JSON 对象中有一个值为
</script><script>alert()</script><script>的字符串,你会得到惊喜。除非您先清理数据,否则这是不安全的。
标签: javascript json dom embedding decoupling