- bounty将在4天后过期**。此问题的答案可获得+100声誉奖励。Henrik Petterson正在寻找来自声誉良好来源的答案:制作一个在iOS和其他移动操作系统上工作的经过测试的解决方案的赏金...
我想通过单击/点击来选择div中的所有文本。参见示例代码(jsFiddle):
document.getElementById('target').addEventListener('click', function (event) {
setTimeout(function() {
window.getSelection().selectAllChildren(
document.getElementById('target')
)
}, 100);
});
<div id="target">
<span>click to select all </span>
<span>text</span>
</div>
它在桌面上工作,但在使用Safari的iOS上不能正常工作(在Android上也可能有同样的问题)。
正如您所看到的,我添加了一个setTimeout()
,试图捕获移动点击,但它只有在多次点击或通过 * 长 * 点击聚焦在div上后才能工作。
我怎样才能让它选择全文与 * 单 * 点击在iOS上使用纯JS?
- 编辑1**:将
touchstart
设置为事件触发器 * 可能 * 有效,但应避免使用,因为向下滚动页面并意外触摸元素可能会触发事件触发器。
- 编辑1**:将
- 编辑2**:悬赏一个在iOS和移动设备上运行的 * 测试 * 解决方案。
1条答案
按热度按时间bzzcjhmw1#
您可以使用
user-select: all;
(MDN)的仅CSS方法来代替JS请注意,如果您希望用户能够在
#target
中选择一个自定义范围,它不会让用户使用这种方法,因为它会"强制"选择全文本。但如果这不是一个问题/要求,CSS方法更优雅(恕我直言),应该可以跨设备/平台工作(如果您需要支持非常旧的浏览器,您也可以使用供应商前缀)。