直接用例子说话:<body>
<div id="TextEara">
<p>这是一条测试字符串</p>
</div>
</body>用鼠标选择“测试”
1、得到“条测试字”,就是对原来的选择文本的范围向左右各扩展一个(多个)字符;
2、得到“测试”所在的索引号(位置),这里返回4;
3、得到DOM路径,这里返回“<body><div><p>”如果要用JS库的话,希望能选用jQuery。
谢谢各位大侠了!!
<div id="TextEara">
<p>这是一条测试字符串</p>
</div>
</body>用鼠标选择“测试”
1、得到“条测试字”,就是对原来的选择文本的范围向左右各扩展一个(多个)字符;
2、得到“测试”所在的索引号(位置),这里返回4;
3、得到DOM路径,这里返回“<body><div><p>”如果要用JS库的话,希望能选用jQuery。
谢谢各位大侠了!!
解决方案 »
- 非常NB的Javascript游戏
- javascript如何接受上一页面的url的值
- 如何清除缓存里的JS文件,重新从服务器下载
- 使用getElementById(idx)时出错,提示参数无效!写了好多js,这还是第一次遇到,大家帮我看看问题处在哪呢?
- 重赏:屏蔽ALT+Home
- 在php中获取js克隆表的数据
- 哈,找了很久了.这些资料
- innerHTML不是向页面写HTML吗?我记得有个函数可以控制信息流可以在下一行输出新信息的?
- 关于页面刷新的问题,急急急急急,在线等待,,给分
- 获取和修改页面json对象属性的值
- 最近在做个人静态主页,要弄个播放器上去,哪里有的下载的啊
- 帮忙分析一个 JavaScriptEncode 文件
<body> <div id="TextEara"> <p>这是一条测试字符串</p> </div>
</body>
<script>
document.body.onmouseup = function(e){
var e=window.event
var t
var s=e.srcElement
var b, e
var r = document.selection.createRange()
b = 0 - r.duplicate().moveStart('character', -100000)
e = b + r.text.length
t = s.innerText.substr(b-1,e-b+2)+"\n"
t += b+"\n"
var p = s
s = "<"+p.nodeName+">"
do
{
p = p.parentElement
if(!p)break;
s = "<"+p.nodeName+">"+s
}
while(p.nodeName!="BODY")
t += s
alert(t)
}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
var rg = {};
rg.getText = function(id, lmove, rmove) {
var o = document.getElementById(id).getElementsByTagName('p')[0];
if(window.getSelection) {
var range = window.getSelection().getRangeAt(0), start = range.startOffset,
end = range.endOffset, html = o.innerHTML.substring(start - lmove, end + rmove);
return '索引位置: ' + start + ' 扩展后字符: ' + html;
} else {
var range = document.selection.createRange(), txt = range.text;
range.moveStart('character', -lmove);
range.moveEnd('character', rmove);
return '索引位置: ' + o.innerHTML.search(new RegExp(txt)) + '扩展后字符: ' + range.text;
}
}; rg.getPath = function() {
var tbl = [];
var direct = (document.selection && document.selection.createRange)
? document.selection.createRange().parentElement()
: window.getSelection().focusNode.parentNode;
do {
tbl.push(direct.tagName);
}
while ((direct = direct.parentNode) && (direct != document.documentElement))
return tbl.reverse().join('---->');
};</script>
</head>
<body>
<div id="TextEara">
<p>这是一条测试字符串</p>
</div>
<input type="button" value="getText" onclick="alert(rg.getText('TextEara', 1, 1));" />
<input type="button" value="getPath" onclick="alert(rg.getPath());" />
</body>
</html>
<body>
<div id="TextEara">
<p>这是一条测试字符串就是对原来的选择文本的范围向左右各扩展</p>
</div>
</body><script type=text/javascript>
function $(o){
return document.getElementById(o) || o
}
$("TextEara").onmouseup = function(){
var x, y, n = 2, str = $("TextEara").innerHTML.replace(/<[^>]*>|[\n|\s]*/g,"");
!! window.getSelection ? get(window.getSelection().toString()) : get(document.selection.createRange().text);
function get(sel){
var re1 = new RegExp("^[^^]*([^^]{"+n+"}"+sel+"[^^]{"+n+"})[^$]*$", "g");
alert(str.replace(re1, "$1")); //第一问
alert(str.indexOf(sel)); //第二问
}
}
</script>第三问在思考中...
<div id="TextEara">
<p>这是一条测试字符串就对原来的选择文本的范围向左右各扩展</p>
</div>
</body><script type=text/javascript>
function $(o){
return document.getElementById(o) || o
}
$("TextEara").onmouseup = function(){
var x, y, n = 2, str = $("TextEara").innerHTML.replace(/<[^>]*>|[\n|\s]*/g,"");
!! window.getSelection ? get(window.getSelection().toString()) : get(document.selection.createRange().text);
function get(sel){
var reg = new RegExp("^[^^]*([^^]{"+n+"}"+sel+"[^^]{"+n+"})[^^]*$", "g");
alert(reg.test(str) && str.replace(reg, "$1") || "选择扩展超出边界!"); //第一问
alert(str.indexOf(sel)); //第二问
}
}
</script>
第三问仍在思考中...
<div id="TextEara">
<p>这是一条测试字符串就对原来的选择文本的范围向左右各扩展</p>
</div>
</body><script type=text/javascript>
function $(o){
return document.getElementById(o) || o
}
$("TextEara").onmouseup = function(){
var x, y, n = 2, str = $("TextEara").innerHTML.replace(/<[^>]*>|[\n|\s]*/g,"");
!! window.getSelection ? get(window.getSelection().toString()) : get(document.selection.createRange().text);
function get(sel){
var reg = new RegExp("^[^^]*(([^^]{"+n+"}|^.*)"+sel+"([^^]{"+n+"}|.*$))[^^]*$", "g");
alert(str.replace(reg, "$1")); //第一问,如果选择扩展超出边界有多少个扩多少个
alert(str.indexOf(sel)); //第二问
}
}
</script>