[問題] getSelection會被<br>洗掉index

看板Ajax作者 (艾倫王十五)時間12年前 (2013/03/09 23:20), 編輯推噓1(1011)
留言12則, 2人參與, 最新討論串1/1
大家好 小弟我最近在研究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

03/09 23:48, , 1F
他有提到document.execCommand()有人會用嗎?
03/09 23:48, 1F

03/10 00:03, , 2F
http://goo.gl/jSRIA 但這個在不同瀏覽器實作不太一樣
03/10 00:03, 2F

03/10 00:08, , 3F
我用的是chrome,樓上大大知道大概會用到哪一項嗎?
03/10 00:08, 3F

03/10 00:12, , 4F
這是不是只有firefox才可以用阿@@
03/10 00:12, 4F

03/10 15:42, , 5F
我似乎找到方法了 正在實作晚點再分享上來
03/10 15:42, 5F

03/10 16:12, , 6F
這是我測試的結果 http://jsfiddle.net/xzp2p/1/
03/10 16:12, 6F

03/10 16:12, , 7F
基本上是可以運作的 只有一個例外
03/10 16:12, 7F

03/10 16:13, , 8F
就是框選的開頭是<br>的話,抓出來的值就會是別的
03/10 16:13, 8F

03/10 16:14, , 9F
window.getSelection().anchorNode.parentElement.
03/10 16:14, 9F

03/10 16:14, , 10F
.childNodes 可以看到所有結構
03/10 16:14, 10F

03/10 16:16, , 11F
我把目前這個斷落的offset加上前面node的offset來處理
03/10 16:16, 11F

03/10 16:16, , 12F
我很偷懶 程式碼沒註解 不過供大家參考
03/10 16:16, 12F
文章代碼(AID): #1HErD6p6 (Ajax)
文章代碼(AID): #1HErD6p6 (Ajax)