如何使用javascript在页面上选择任意文本?

Luc*_*cas 5 javascript webkit

假设我有一个contentEditable div,用户可以编辑和更改其中的文本和元素.如何div使用javascript 随意更改此选项?通过"改变"我的意思不是"改变任何的用户选择的内容",我的意思是真正改变什么选择.然后,用户应该能够键入选择内容,将其替换为其他内容.

这应该考虑到我可能想要跨元素选择文本.例如:

<p>Some text <span>goes</span> here.</p>
Run Code Online (Sandbox Code Playgroud)

我可能想要选择"一些文字去",或者内部的所有内容<p>.

这只需要在Safari/Webkit中工作.

提前致谢.作为本地代码开发人员,我发现DOM和Javascript一般非常令人沮丧.

Luc*_*cas 11

只是为了详细回答我自己的问题,所以任何寻找类似东西的人都不必去别处寻找......

我最终使用的代码是这样的:

var range = document.createRange();
range.setStart( <get the node the selection starts in>, <char offset in that node> );
range.setEnd( <get the node the selection ends in>, <char offset in that node> ); 

window.getSelection().removeAllRanges();
window.getSelection().addRange(range);
Run Code Online (Sandbox Code Playgroud)

非常感谢James Black指出了正确的方向.


Jam*_*ack 2

除非您需要自己编写,否则您可能需要查看tinyMCE,http://tinymce.moxiecode.com/,因为它是一个很好的所见即所得的 JavaScript 编辑器。

为了做到这一点,您可能需要查看如下内容: http://codingtricks.blogspot.com/2009/03/javascript-select-partial-text-in-div.html

这些也可能有帮助: JavaScript range gone bad https://developer.mozilla.org/en/DOM/window.getSelection

您想要做的事情将会很复杂,因为您需要选择所选区域,删除所有标签,然后放入您想要为所选区域添加的标签。