如何在Firefox中使用PURE JavaScript替換選定的文本與另一個文本?替換Firefox中的選定文本
這是我用得到的選擇:
var sel = this.getSelection();
var range = sel.getRangeAt(0);
而且也是這個重要的問題:
我想保持字符的原始格式(當然新的字符串,纔會有正確的格式)
選擇可以做「交叉元素」(通過這個我的意思是選擇可以包含來自一個元素,如div或表的一些文本和來自另一個元素的一些文本)。
例如,文檔:
<div>
this is a test
</div>
<div>
<b>still a test</b>
</div>
<table style="width:100%;">
<tr>
<td>
another word</td>
<td>
stackoverflow</td>
</tr>
<tr>
<td>
bump</td>
<td>
</td>
</tr>
</table>
用戶選擇下面的文本(通過一個選擇):
他是一個考驗還在測試ANOT
所以現在我想替換保持格式的文本,例如用新字符串替換每個東西=
XXX XX X XXXX XXXXX X XXXX XXXX
最後文件(替換後)將是:
<div>
tXXX XX X XXXX
</div>
<div>
<b>XXXXX X XXXX</b>
</div>
<table style="width:100%;">
<tr>
<td>
XXXXher word</td>
<td>
stackoverflow</td>
</tr>
<tr>
<td>
bump</td>
<td>
</td>
</tr>
</table>
這太棒了!對於父元素,我認爲我們可以使用range.commonAncestorContainer,並檢查邊界range.compareBoundaryPoints。 請看看它是否可以用於你的代碼(我認爲它可以),無論如何,即使它是mot我會接受你的答案後,您的意見:)謝謝 – kenny 2010-01-09 15:46:19
我認爲這是range.comparePoint而不是range.compareBoundaryPoints – kenny 2010-01-09 16:22:42
請注意,如果選定的文本位於文本框內,這不起作用。如果你想看到什麼:http://stackoverflow.com/questions/4714192/insert-text-before-and-after-selection-in-textarea-with-javascript/4714850#4714850 – 2011-01-28 13:02:53