Javascript 如何在firefox的tinymce编辑器中选择文本范围

Javascript 如何在firefox的tinymce编辑器中选择文本范围,javascript,firefox,Javascript,Firefox,我正在尝试使用mozilla firefox中的JavaScript在TinyMCE编辑器中选择指定的文本。所以我想在下面的文本中选择“Hello World” <body class="mceContentBody " id="tinymce" dir="ltr"> <p>Hi there Hello World this is amazing<br_mce_bogus="1"></p></body> 分别使用除0和1之外的sta

我正在尝试使用mozilla firefox中的JavaScript在TinyMCE编辑器中选择指定的文本。所以我想在下面的文本中选择“Hello World”

<body class="mceContentBody " id="tinymce" dir="ltr">  <p>Hi there Hello World this is amazing<br_mce_bogus="1"></p></body>
分别使用除0和1之外的startOffset和endOffset(在setStart和setEnd中),JavaScript会抛出错误

索引或大小为负数或大于允许的数量


TinyMCE中有一个API可以实现这一点,但我不知道,所以我将为您提供DOM范围版本。您需要获得包含所需文本的文本节点:

var range = document.createRange();
var start = document.getElementById('tinymce');
var textNode = start.getElementsByTagName('p')[0].firstChild;
range.setStart(textNode, 9);
range.setEnd(textNode, 20);
window.getSelection().addRange(range);

IE的
TextRange
和DOM的
Range
在概念上非常不同:前者几乎只关注文本内容,很少关注DOM节点边界,而后者则完全关注DOM节点(包括文本节点和元素)和它们内部的偏移量。

Wow..太好了…它工作得很好…我认为这个技巧是在做'getElementsByTagName('p')[0]。firstChild',因为我只尝试使用getElementsByTagName('p')[0]…谢谢Tim..你让我开心了:)
var range = document.createRange();
var start = document.getElementById('tinymce');
var textNode = start.getElementsByTagName('p')[0].firstChild;
range.setStart(textNode, 9);
range.setEnd(textNode, 20);
window.getSelection().addRange(range);