gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 13:36:38 25 4
gpt4 key购买 nike

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

<body class="mceContentBody " id="tinymce" dir="ltr">  <p>Hi there Hello World this is amazing<br_mce_bogus="1"></p></body>

我成功地编写了一个 JavaScript 来在 IE 的 tinymce 编辑器中选择一个文本范围(因为 IE 使用文本范围对象,很容易移动范围)。不过,我在 mozilla 中选择我想要的文本时仍然遇到问题。它选择了全部内容,但不确定如何选择我想要的内容。有人吗?或者任何人都可以举例说明如何使用 tinyMCE API 来选择指定的文本吗?

var range = document.createRange();
var start = document.getElementById('tinymce');
range.setStart(start, 0);
range.setEnd(start, start.childNodes.length);
window.getSelection().addRange(range);

分别使用非 0 和 1 的 startOffset 和 endOffset(在 setStart 和 setEnd 中),JavaScript 抛出错误

Index or size is negative or greater than the allowed amount

最佳答案

TinyMCE 中有一个 API 可以执行此操作,但我不知道,所以我会给你 DOM Range 版本。您需要获取包含所需文本的文本节点:

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节点(包括文本节点和元素)及其中的偏移量。

关于javascript - 如何在 firefox 中的 tinymce 编辑器中选择文本范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4565282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com