不知道标题选得好不好……
我正在尝试在 HTML/JS/CSS 中模拟文本选择,以在真正选择文本时摆脱移动设备上的动作气泡。
更具体地说,我试图避免这种情况:
视觉:
我构建它的方式可能会改变,因为这无关紧要,选择的文本包含在 aspan.selection
和该标记内,还有两个插入符号用作处理程序:
Lorem ipsum dolor <!-- Unselected Text -->
<span class="selection"> <!-- Start selection wrapper -->
<span rel="previous" class="caret"></span> <!-- The left-side caret -->
sit amet, consectetur <!-- The selected texts -->
<span rel="next" class="caret"></span> <!-- The right-side caret -->
</span> <!-- End selection wrapper -->
adipiscing elit. <!-- Unselected Text -->
理想情况下,使用拖放来选择更多或更少的文本会很有趣,但我相信这将很难做到,在这种情况下,可能使用单击插入符号来选择上一个或下一个单词并将它包裹在里面.selection
不会那么糟糕。
这是jsfiddle:http: //jsfiddle.net/m6Qx4/
周围的文本也可能包含 HTML 标记,例如:<i>
、、和<b>
,<span>
并且<ul>/<li>
可能存在使解析更加困难。
任何想法如何做到这一点?
状态更新:
.click();
我实际上已经设法使用我的自定义 jQuery 方法使其与事件侦听器一起工作。
最终,只要它可用于移动设备,我将用可拖动的 jQuery UI 替换点击事件以选择周围的单词。
我当前的错误包括红色插入符号的重新定位。我已经尝试销毁它们并将它们添加/添加回来,但它仍然无法正常工作。更改文本节点后无法正确重新加载 DOM 可能是 Firefox 的错误?