如何在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