2013-01-19 15 views
1

我想要做什麼:恢復從多個選擇DB使用瘦長

- >顯示一個普通的HTML頁面給用戶 - >用戶具有突出文本該網頁 上的能力 - >當用戶下次登錄時,我應該能夠在頁面上檢索並顯示其先前(多個)突出顯示。

我做了什麼:

我用Library/API : Rangy。隨着這個IAM能夠選擇文本,並與喜愛的顏色的用戶突出顯示。

問題:

我嘗試了序列化和反序列化功能,但是當我嘗試反序列化(頁面已經被重新加載後),它給了我一個錯誤說的

校驗串行化的範圍根節點(ec0c8cf0)和目標根 節點(d4997863)不匹配

每次我重新加載該頁面,有一個新的根節點,如何在這種情況下修復反序列化?

創建一個JS-小提琴demo/js-fiddle

這是什麼 - 如果你檢查我的演示,我選擇的描述,即「請」,我得到的高亮顯示文本的第一個字,我也可以獲得如下序列:

0/3/1/3/0/1/1/2:9,0/3/1/3/0/1/1/2:9 {b3002d92}

所以我做的是,我硬編碼這個序列第二把它放到deserializeSelection功能可按這樣在頁面的onLoad功能: -

rangy.deserializeSelection('0/3/1/3/0/1/1/2:9,0/3/1/3/0/1/1/2:9{b3002d92}'); 

所以在技術上,它應突出「請」的描述,只要在頁面加載,irrespectively.But這不,不是給我在塊中的上述錯誤。 你能不能幫我解決this.please.Thank你

附加:

1.I真的不明白瘦長的序列化和反序列化的方法。

2.我的抽象路線圖非常抽象,在頁面加載時執行一次AJAX調用,並從我的數據庫中獲取此頁面的所有用戶(序列化)選擇,然後遍歷它們並執行反序列化。

任何幫助,將不勝感激。 謝謝。

+0

爲什麼使用插件Ajax和不StoreAge的方法呢?也可以修改爲使用'localStorage'而不是Cookie來支持它的現代瀏覽器 – charlietfl

+0

此演示http://rangy.googlecode.com/svn/trunk/demos/serializer.html顯示如何使用序列化更新輸入值,以及從輸入值更新dom。如果你發送到db – charlietfl

+0

@charlietfl,感謝你的快速響應,是的,我看到了serialize方法,但是我面臨的困難是,當我反序列化(渲染高亮)時,我們可以只做1選擇,我怎麼能做同樣的多選? –

回答

0

我覺得你應該試試這個:

var selObj = rangy.getSelection(); 
var se = rangy.serializeSelection(selObj, true); //true to avoid DOM checksum 
+0

會嘗試,並回來@arvindBharadwaj –

+0

@arvindBharadwaj似乎無法通過,你能幫助嗎? –