我寫了一個簡單的測試來更改可編輯div內容中的文本。 html結構已更改,但文本相同。如何修改可編輯div元素的html結構更改時的選擇/插入符號位置?
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Hello</title>
<script type="text/javascript" src="rangy-core.js"></script>
<script type="text/javascript" src="rangy-
selectionsaverestore.js"></script>
</head>
<body>
<div id="show" class="code" contenteditable="true"><span
style="color:red">12345</span>12345</div>
<script type="text/javascript">
window.setTimeout(function() {
// save selection/caret position
var show = document.getElementById("show");
show.innerHTML = "1234512345";
// restore select/caret position
}, 5000)
</script>
</body>
</html>
我已經試過rangy這樣的:
var s = rangy.saveSelection();
var show = document.getElementById("show");
show.innerHTML = "1234512345";
rangy.restoreSelection(s);
但它報告錯誤:
Rangy warning: Module SaveRestore: Marker element has been removed. Cannot restore selection.
是否瘦長支持我上面提到的功能?如果是,我應該如何使用它?如果不是,我該怎麼做才能實現呢?
更新:在我的方案中,我必須替換所有的innerHTML,因爲文本將被格式化爲非常豐富的樣式。但在我的情況下,沒有風格的文本總是一樣的。是否有任何可能的方式來記錄選擇和插入位置並將其設置回去?我應該使用什麼樣的API?
感謝。在我的場景中,我必須替換所有的innerHTML,因爲文本將被格式化爲非常豐富的樣式。是否有任何可能的方式來記錄選擇和插入位置並將其設置回去?我應該使用什麼樣的API? – 2012-03-15 12:25:22
@JeffreyZhao:鏈接到的問題中的'saveSelection()'和'restoreSelection()'函數應該有所幫助。 – 2012-03-15 12:44:18
它可以很容易破碎。無論如何,我可以按照你的命中來調查API。 – 2012-03-15 15:49:09