作者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