2012-07-20 109 views
0

這是一個後續問題this。我序列化了一個iframe中的文本選擇並想恢復它,但它給了我一個錯誤,「未捕獲錯誤:反序列化範圍:序列化範圍根節點(XXXXX)和目標根節點(XXXXX)的校驗和不匹配」Range.deserializeSelection校驗和錯誤?

var iframe = $("iframe")[0]; 
var selection = rangy.getSelection(iframe); 
var serializeSelection = rangy.serializeSelection(selection); 
alert(serializeSelection); 
rangy.deserializeSelection(serializeSelection); 

演示:http://jsfiddle.net/codef0rmer/2d6Bk/1/

回答

1

您需要提供window對象作爲第三個參數:

rangy.deserializeSelection(serializeSelection, null, iframe.contentWindow); 

演示:http://jsfiddle.net/2d6Bk/2/

這比應該更尷尬。版本1.3允許您使用iframe而不是iframe.contentWindow,但它仍然太難讀,所以我會以某種方式改進它。

0

關於「未捕獲錯誤:deserializeRange:串行化的範圍根節點(XXXXX)和目標根節點(XXXXX)的校驗和不匹配」錯誤:

瘦長序列化和反序列化應做相同的格式和鍵入文本。有時文本或格式或CSS可能會在反序列化時發生更改。所以你必須照顧你的文字。在您使用Iframe時,請在將文本加載到iframe後調用一次方法。我們所做的錯誤是我們在頁面加載後序列化文本,並在反序列化的同時,我們嘗試在iframe加載後反序列化文本。只需在開始反序列化之前檢查您的iframe是否加載了內容。