把javascript数据放在html:内联脚本或数据属性中?

时间:2012-03-14 13:07:49

标签: javascript performance browser

我需要将一些带有html页面的数据发送到浏览器,这将由javascript(用户的详细信息等内容)使用。 我看到了两种方法,我想知道哪一个更好(阻止浏览器更少,表现更好):

1.html中的内联脚本:

<script>var userData = {username:'joe',age:42,pet:'dog'}</script>`

html中的2.data属性:

<div id="user-data" style="display:none" data-username="joe" data-age="42" data-pet="dog"></div>` and code in external javascript file: `function getUserData() {..this extracts the data from the div and caches it...}

我知道内联脚本标签会阻止浏览器,另一方面它们的解析速度可能会比以后用javascript更快。

3 个答案:

答案 0 :(得分:1)

如果您真的不想使用ajax,可以考虑使用<script type="application/json"></script>将您要发送的数据与您的页面一起使用。然后编写一个脚本非常容易,该脚本在页面加载时从页面中抓取所有json作为附加页面数据。您已经延迟执行的好处是,您不会将数据直接注入全局范围,也不会在服务器端生成JavaScript。

答案 1 :(得分:0)

至少就用户而言,性能几乎没有差异。使用<script>标签会更加清晰,所以我会说这个。

添加脚本(外部或内部)的最佳方法是将它们放在body标记的底部。这将延迟脚本的执行,直到加载整个DOM,这不仅可以提高感知性能,而且在大多数情况下,您不需要DOMContentLoaded回调来获取元素。

答案 2 :(得分:0)

如果数据与DOM元素直接相关,那么我会使用第二种方法......但是如果数据是独立的,那么第一种方法将是我的方式....

没有任何性能损失 - 浏览器没有“阻塞”。