【发布时间】:2021-11-01 20:04:45
【问题描述】:
在 jQuery 终端中,我想添加一个返回所选内容索引的 API。
我拥有的示例 HTML:
<div class="cmd" style="width: 100%; --cursor-line:1; top: 0px;">
<div class="cmd-wrapper" style="">
<span class="cmd-prompt" style="visibility: visible; margin-left: 0px;">
<span data-text="> ">
<span style="width: 2ch;">> </span>
</span>
</span>
<div role="presentation" aria-hidden="true" class="cmd-end-line">
<span data-text="H">
<span>H</span>
</span>
<span data-text="e">
<span>e</span>
</span>
<span data-text="l">
<span>l</span>
</span>
<span data-text="l">
<span>l</span>
</span>
<span data-text="o">
<span>o</span>
</span>
<span data-text=" ">
<span> </span>
</span>
<span data-text="W">
<span>W</span>
</span>
<span data-text="o">
<span>o</span>
</span>
<span data-text="r">
<span>r</span>
</span>
<span data-text="l">
<span>l</span>
</span>
<span data-text="d">
<span>d</span>
</span>
<span data-text=" ">
<span> </span>
</span>
</div>
<div class="cmd-cursor-line" role="presentation" aria-hidden="true">
<span>
<span data-text="x">
<span>x</span>
</span>
<span data-text="x">
<span>x</span>
</span>
<span data-text="x">
<span>x</span>
</span>
<span data-text="x">
<span>x</span>
</span>
<span data-text="x">
<span>x</span>
</span>
</span>
<span class="cmd-cursor" style="">
<span data-text="" class="end">
<span> <span></span></span>
</span>
</span>
<span></span>
</div>
</div>
<textarea autocapitalize="off" spellcheck="false" tabindex="1" class="cmd-clipboard" data-cmd-prompt="> " style=""></textarea>
</div>
这是输入“Hello World\nxxxxx”并使用https://jsonformatter.org/html-pretty-print进行格式化和漂亮打印后的DOM复制粘贴
我的问题是我应该怎么做才能获得选择索引?
例如,我有一个这样的命令:
> He|lo wor|d
我应该得到[2, 8],如果选择超出范围:示例
>|>> Hello| world
>>> 提示我应该得到[0, 5] 我不在乎是否定的。当整个选择都在外面时,我也应该处理
|>>>| Hello World
它应该返回 [0, 0] 或 null。
如何实现这样的事情?注意:我只关心window.getSelection API它是100%支持,不需要傻和支持 IE8。
【问题讨论】:
-
我不明白:window.getSelection (with it's start and end api) 不是答案吗?
-
@ControlAltDel 你在哪里有选择的开始和结束API,我在MDN上没有看到它developer.mozilla.org/en-US/docs/Web/API/Selection
标签: javascript html dom textselection