2011-03-15 49 views
1

我試圖讀取contentEditable div的內容並提取當前活動的單詞。即。剛剛輸入的字詞或修改過的字詞。使用JavaScript檢測 和空間

我最初的做法是:

  1. GET字符串作爲innerHTML
  2. 使用函數獲取光標位置(現在我發現,被修飾的詞)
  3. 直到一個空間倒讀發現(逐字比較)
  4. 從找到的空間點提取單詞。

但問題是,瀏覽器有時會將空格轉換爲 ,有時不會(如果只有一個空格,則沒有問題)。然後我決定使用第二個循環來讀取5個字符,如果找到a ;並檢查它。但這似乎效率很低。那麼有沒有更好的方法來做到這一點?

+0

你不能只是使用替代(http://www.w3schools.com/jsref/jsref_replace.asp)打開,然後返回到空間? – Urbycoz 2011-03-15 09:42:31

+0

@Urbycoz:爲此,我必須再次傳遞整個字符串,替換函數將解析整個字符串以替換nbsp。問題在於,每次輸入字母時都會進行檢查。所以,我正在尋找最高效的代碼是速度方面。 – 2011-03-15 13:13:35

回答

5

我找到了解決方法。以前,我使用innerHTML來獲取內容。 現在,我正在使用targ.firstChild.nodeValue,其中targ是需要其內容的元素。然後使用str.charCodeAt(i)==32 || str.charCodeAt(i)==160進行檢查。

這效果很好。

+0

作爲一種更好的方法,現在我正在瀏覽所有文本節點,從而獲取整個文本。 – 2011-03-22 10:28:48

0

我認爲你在找什麼在這裏:non-breaking space in Javascript

+0

謝謝,但我已經看到了這個鏈接。除了直接檢查字符nbsp外,還有其他方法嗎? – 2011-03-15 13:16:55

+0

那麼,如果你需要檢查文字「 」,像'/ &(amp;)這樣簡單的正則表達式就足夠了。但是如果你想檢查不間斷的空格,因爲瀏覽器會將它們轉換爲空格,所以你不能將它們與普通空格區分開來,而不必檢查字符代碼。 – 2011-03-16 07:42:49

1

String.fromCharCode(160)爲我工作。它代表 個字符。 if(str == ' ')在if條件下不工作,trim();但if(str == String.fromCharCode(160))工作。

對於檢查正常使用空間if(str.trim() == '')