光标全选单词

去圣西罗-为尤文喝彩 2011-09-22 05:29:12
最近在研究学习 window.getSelection 。
想做一个效果,鼠标选择任意词组的某一单词后,光标会自动全选整个单词。
我使用 range.toString() 函数(这个只能在非IE浏览器里工作,有点遗憾)然后match 单词前后的空格或者HTML TAG,来判断是否为一个完整的单词。使用 match(/\w/)//匹配空格,可以正常运行,但是使用 match(/<[^>]+>/g) 引起 "Uncaught SyntaxError: Unexpected token <" 错误,不能正常工作,请大家帮忙看看,问题在哪里?

解释一下: <div id="content-area">aaa bbb ccc ddd eee fff ggg</div>
bbb,前后都是空格,所有可以判断bbb是一个完整的单词。aaa前面是一个HTML TAG,后面是一个空格,所有我尝试match(/<[^>]+>/g)。 ggg 前面是空格,后面是HTML TAG,所有我尝试 .match(/(<\/[^>]+>)/g。

另外,除了 range.toString(),是否还有更好的方法,实现光标自动全选整个单词的效果?

<script src="jquery.js"></script>
<script>
function getSelected() { //鼠标选择文字
if(window.getSelection) { return window.getSelection(); }
else if(document.getSelection) { return document.getSelection(); }
else {
var selection = document.selection && document.selection.createRange();
if(selection.text) { return selection.text; }
return false;
}
return false;
}
function expand(range) { //根据空格和HTML TAG,判断是否一个完整的单词。
if (range.collapsed) {
return;
}
while (range.toString()[0].match(/\w/)||range.toString()[0].match(/<[^>]+>/g)) {
range.setStart(range.startContainer, range.startOffset - 1);
}
while (range.toString()[range.toString().length - 1].match(/\w/)||range.toString()[range.toString().length - 1].match(/(<\/[^>]+>)/g)) {
range.setEnd(range.endContainer, range.endOffset + 1);
}
}

jQuery(document).ready(function() { //jQuery mouseup执行鼠标选择文字。
$('#content-area').mouseup(function() {
var selectionRange = getSelected().getRangeAt(0);
var start = selectionRange.startOffset;
expand(selectionRange);
var selection = selectionRange.toString();
if(selection && (selection = new String(selection).replace(/^\s+|\s+$/g,''))) {
$('#show-text').html(selection)
}
});
});
</script>
<div id="content-area">aaa bbb ccc ddd eee fff ggg</div>
<div id="show-text"></div>
...全文
127 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
bump + +
yushanjuan 2011-09-22
  • 打赏
  • 举报
回复
我也要顶一下啦!
  • 打赏
  • 举报
回复
又莫有人理睬,代码都上全了,复制粘贴就可以本地测试,只是帮忙看下这个正则哪里不正确……
  • 打赏
  • 举报
回复
顶一下,T5500,phpnewnew等高手在吗?

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧