2011-08-12 101 views
3

我有一个jQuery脚本,它在文档准备就绪的情况下运行,并尝试获取一些配置值。我想将这些值存储在JSON中。将JSON存储在HTMl中

我已经做到了这一点:

<div id="settings" style="display: none">{"name": "value"}</div> 

然而,这不是搜索引擎友好。

是否有另一种方法嵌入JSON内的HTML,然后用jQuery拉?

谢谢。

+0

你如何包括JSON,它是可见的搜索引擎?这通常不是问题。 –

+0

你能否包含你用来启动灯箱的线?我可以想出几个方法来解决你的问题,使用lightbox的幻灯片初始化代码将帮助人们回答 –

回答

1

是的,你可以创建一个自定义类型属性和ID的<script>元素。您可以使用该ID来获取该元素并检索文本内容。

当然,你可能只需要插入JSON在与您的其他脚本,并将其分配给一个变量。

但是,谁也不能保证搜索引擎将索引的脚本元素的内容。

相反,你可以只建立某种形式的隐藏元素,用JSON作为其文本内容。

1

为什么不输出在一个搜索引擎友好的方式(我想这是很重要的,因为你提到它),与普通jQuery选择访问这些标记中的数据?如果需要,可以使用CSS隐藏数据元素。

+0

不,这是不可能的。我只是告诉我的灯箱脚本做幻灯片放映,这只能用json才能放置它? – Vincent

+1

所以你需要将对象中的数据传递给插件?同样,如果SEO很重要,您可以从标记中的数据创建JavaScript对象。至少我是这么做的:) –

3

你需要保持你的数据与DOM分开。

假设您将页面从某个模板系统渲染出来,您将在模板中提供相同的数据以呈现html版本(搜索引擎读取的内容)和数据部分,你的脚本使用。

它最好不要污染在当前页面的上下文中运行的JS线程的命名空间。为此,我建议将数据包含在分配给您的灯箱读取后的变量的脚本标记中。

例如:

<div> {name} </div> 
<div> {value} </div> 

<script> 
    var mydata = mydata || {}; 
    mydata.lightbox = { 
     "name": "value" 
    } 
</script> 

或者,如果你做一个XHR或JSONP请求来获取JSON数据,你仍然可以使用MYDATA的办法,或者只是将数据直接在您的收藏工作。