【发布时间】:2013-12-26 01:52:50
【问题描述】:
希望以编程方式在 DOM 元素中选择 HTML,就像用户用鼠标选择一样,正是为了避免让他们用鼠标选择。
来自 SO 帖子 (Select all DIV text with single mouse click) 的这段优雅代码在我测试过的笔记本电脑浏览器(IE、Chrome、FF、Windows 和 Mac 上的 Safari)上运行良好:
function selectText(el) {
if (document.selection) {
var range = document.body.createTextRange();
range.moveToElementText(el);
range.select();
console.log("select 1");
} else if (window.getSelection) {
var range = document.createRange();
range.selectNode(el);
window.getSelection().addRange(range);
console.log("select 2");
}
else {
console.log("select 3");
}
};
JSFiddle: http://jsfiddle.net/z4yMh/7/
但不适用于 Safari 移动版(请参阅 JSFiddle)。移动开发控制台显示他的控制台显示select 2 表示点击事件被调用,移动开发控制台显示没有错误(即方法selectNode() 似乎不为空),只是没有发生任何事情。
不知道为什么。谷歌搜索很困难,因为 select 也被用来指代不同的概念 jQuery/DOM 选择器。
我希望的是一种类似于 Safari 移动设备中的原生选择的效果,如下图所示:
这个项目没有使用 jQuery,但是如果能解决问题 jQuery 就可以了。
【问题讨论】:
-
我猜由于点击和触摸之间的差异,无法在 Safari Mobile 上运行。
-
好主意。点击事件被调用。更新小提琴并发布以验证情况是否如此。
-
@user645715 我更新了您创建的 jsfiddle 以显示它的实际效果。
标签: javascript select