2011-08-12 102 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的辦法,或者只是將數據直接在您的收藏工作。