2013-03-05 18 views
0

我正在開發一個應用程序,使用戶能夠在文本文章上進行協作(通常通過突出顯示/記錄特定文本跨度)。如何將JavaScript中的文本亮點編碼爲API

我將有一個以某種形式提供文檔的API(它們現在是.doc格式,但我想用Markdown之類的東西來提供它們)。我可以放心地認爲文章的內容不會改變。

我目前卡在這些亮點的編碼格式。問題在於這些文章對它們有一些格式(例如,作者會從另一篇外部文章引用的blockquotes,以及典型的換行符和段落間距),因此客戶端將解釋格式與服務器不同。

例如,減價使用>字符來表示一個塊引用的內容,而HTML使用<blockquote> - 所以在這種情況下,我的Javascript代碼會 - 當住在<blockquote>用戶亮點文本 - 需要做一些凌亂的計算獲得正確的字符偏移量。

最後,我想總是與字符偏移量在服務器上的工作如下:

// e.g. 
// from the 55th character to the 58th character 
// offset = [55, 3] 

我簡要地考慮其他幾個方面:

  • 發送文章儘管這會產生相同的問題,因爲我需要將CSS類添加到HTML標記中
  • 將文章內容作爲字符串數組發送(在文章的每個換行符中分隔)並給一個類型的eac^h的項目(例如,「正常」或「塊引用」) - 儘管這似乎是一個簡單的方式來解決這個問題

有編碼從我失蹤客戶端,這些亮點的一些其他更清潔的方式?

編輯:爲了更清晰 - 這將是一個客戶端應用程序(需要一個現代瀏覽器)。

回答

1

這是一個具有挑戰性的問題;沒有簡單的答案。您需要想出一些易於使用的不變量,最好能讓您使用不同的格式標記語言。我建議將偏移量存儲到文檔文本中(忽略標記)。當然,從您的編輯器獲取文本偏移可能並不容易。如果您在瀏覽器中工作,則內容將是HTML我認爲的內容,並且您將從瀏覽器的選擇對象中獲得偏移量,該偏移量不會提供您理想中想要的文本偏移量。你可以用一些奇特的XPath來計算它。即使你這樣做了,如果將文檔轉換爲另一種格式,仍然可能會出現問題,因爲可能會轉換或刪除換行符。

所以我認爲答案是:不,沒有魔力,而且你在正確的軌道上。