看板 Ajax 關於我們 聯絡資訊
大家好 小弟我最近在研究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
allenwang15:他有提到document.execCommand()有人會用嗎? 03/09 23:48
Fantasywind:http://goo.gl/jSRIA 但這個在不同瀏覽器實作不太一樣 03/10 00:03
allenwang15:我用的是chrome,樓上大大知道大概會用到哪一項嗎? 03/10 00:08
allenwang15:這是不是只有firefox才可以用阿@@ 03/10 00:12
allenwang15:我似乎找到方法了 正在實作晚點再分享上來 03/10 15:42
allenwang15:這是我測試的結果 http://jsfiddle.net/xzp2p/1/ 03/10 16:12
allenwang15:基本上是可以運作的 只有一個例外 03/10 16:12
allenwang15:就是框選的開頭是<br>的話,抓出來的值就會是別的 03/10 16:13
allenwang15:window.getSelection().anchorNode.parentElement. 03/10 16:14
allenwang15:.childNodes 可以看到所有結構 03/10 16:14
allenwang15:我把目前這個斷落的offset加上前面node的offset來處理 03/10 16:16
allenwang15:我很偷懶 程式碼沒註解 不過供大家參考 03/10 16:16