我的JS代码:
function getSelectedText(){
if(window.getSelection){
select = window.getSelection().getRangeAt(0);
var st_span = select.startContainer.parentNode.getAttribute("id").split("_")[1];
var end_span = select.endContainer.parentNode.getAttribute("id").split("_")[1];
console.log(select.endContainer);
var ret_urn=[st_span,end_span];
return ret_urn
}
else if(document.getSelection){
return document.getSelection();
}
}
$(document).ready(function() {
$("div#check_button button").click(function () {
var loc = getSelectedText();
console.log(loc);
});
});
这是我的整个html文件:http://pastebin.com/acdiU623
很难解释,所以我准备了短片:http://www.youtube.com/watch?v=tVk4K70JO80
用几句话说:当我按住鼠标左键并按住它来选择文字/数字并从字母/数字的一半开始选择时,虽然这个字母/数字没有突出显示,但它会被添加到选择中。我必须准确地开始选择。宽字母很好用,但用i,j或l等字母很难。
这是我电影的第二个例子。我按了5号长度的3/4处的左按钮,虽然没有突出显示5,但它被选中。
在FF和Opera上测试过。
答案 0 :(得分:1)
好的,试过这个演示。它完美无瑕。它甚至适用于Firefox。刚刚测试过的歌剧和野生动物园,它也适用于它们。即使我选择半个字母或数字,它也会返回突出显示的文本,这是您进行选择时所期望的。
在新网页上试用,但仅用于测试目的。然后当它工作并且您对结果感到满意时,然后开始对现有页面进行更改。
它比你的代码简单得多。这是一个跨浏览器脚本,用于获取用户选择的文本
<script language=javascript>
function getSelText()
{
var txt = '';
if (window.getSelection)
{
txt = window.getSelection();
}
else if (document.getSelection)
{
txt = document.getSelection();
}
else if (document.selection)
{
txt = document.selection.createRange().text;
}
else return;
document.aform.selectedtext.value = txt;
}
</script>
<input type="button" value="Get selection" onmousedown="getSelText()">
<form name=aform >
<textarea name="selectedtext" rows="5" cols="20"></textarea>
</form>
http://www.codetoad.com/javascript_get_selected_text.asp
希望这有帮助。
<强> PK 强>
答案 1 :(得分:0)
对于与用户看起来相同的选择,有多个不同的边界点。您所看到的可能是以下内容之间的差异,其中|
是选择边界:
<span>5</span><span>|6</span><span>7|</span><span>8</span>
和
<span>5|</span><span>6</span><span>7</span><span>|8</span>
在这两种情况下,在选择上调用toString()
会得到相同的结果(“67”)。