作者allenwang15 (艾伦王十五)
看板Ajax
标题[问题] getSelection会被<br>洗掉index
时间Sat Mar 9 23:20:34 2013
大家好
小弟我最近在研究getSeletion,想把get到的文字加上div,
就像是把字加底色这样,我用抓到baseOffset与extentOffset来算间距。
程式码大概是这样
//article是存原本的文章
var prefix = article.substring(0,baseOffset);
var mid = article.substring(baseOffset,extentOffset);
var suffix = article.substring(extentOffset);
temp_str = prefix + "<div class='highlight'>" + mid + "</div>" + suffix;
不过重点来了,每当抓到天杀的<br>,字的index就会归0,也就是说<br>後的
baseOffset就会是0,搞得我不知道该怎麽办。
有什麽方法可以解决这个问题呢?
网路上有找到问一样问题的人,不过最下面的解法我看不太懂,不知道是否能用
有请各位大大帮忙了,感恩!
问题网址的缩址:
http://0rz.tw/xlSuB
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.135.250
1F:→ allenwang15:他有提到document.execCommand()有人会用吗? 03/09 23:48
3F:→ allenwang15:我用的是chrome,楼上大大知道大概会用到哪一项吗? 03/10 00:08
4F:→ allenwang15:这是不是只有firefox才可以用阿@@ 03/10 00:12
5F:→ allenwang15:我似乎找到方法了 正在实作晚点再分享上来 03/10 15:42
7F:→ allenwang15:基本上是可以运作的 只有一个例外 03/10 16:12
8F:→ allenwang15:就是框选的开头是<br>的话,抓出来的值就会是别的 03/10 16:13
9F:→ allenwang15:window.getSelection().anchorNode.parentElement. 03/10 16:14
10F:→ allenwang15:.childNodes 可以看到所有结构 03/10 16:14
11F:→ allenwang15:我把目前这个断落的offset加上前面node的offset来处理 03/10 16:16
12F:→ allenwang15:我很偷懒 程式码没注解 不过供大家参考 03/10 16:16