我想寫一個比較$(element).text()和$(element).html()輸出的例程來確定html標籤的位置。這將稍後用於將格式化標記(如「strong」和「em」)應用於contenteditable,而不使用document.execCommand()。哪些必要的字符轉換爲html實體?
此時我意識到要進行比較工作,需要將$(element).text()輸出中的'>','<'和'&'等字符轉換爲它們各自的html實體。從firebug我看到這些字符自動轉換爲innerHTML屬性。我嘗試過其他角色。如引號和元音變音,並且這些不會被轉換。
我的問題是:
是否有字符的基本集(我的猜測是>,<,並&)是那些獲得跨瀏覽器的一致性轉換?我的目標瀏覽器是Firefox和Chrome,不需要IE瀏覽器,謝天謝地。
這組字符是由jQuery的.html()方法所尊重的,還是jQuery自己做的事情來平衡跨瀏覽器的差異。如果是這樣,我在哪裏可以找到jQuery轉換爲實體的基本字符的完整列表?
進一步澄清:
如果在CONTENTEDITABLE我有這樣的文字段落手動輸入:
some text, and some characters >, <, ", &, ', ë
$('p').text()
會給我:
some text, and some characters >, <, ", &, ', ë
而$('p').html()
會給我:
some text, and some characters >, <, ", &, ', ë
這也是我在firebug和chrome開發人員工具中看到的結果。
<,>和&顯然是必不可少的整個事情的工作,而報價和特殊字符不是。
我想通過查找/全部替換來轉換$('p').text()
的結果,以便匹配$('p').html()
的輸出,減去標籤本身。
我需要知道除明顯的<,>和&之外的其他字符需要轉換爲html實體纔能有完美匹配。
這是什麼:
我想建立一個CONTENTEDITABLE DIV簡單WYSIWYM編輯,而不訴諸現有WYMEditor它帶有內嵌框架。
這將用於受控環境(我的自定義cms),並將允許在HTML編輯器中預期的功能的子集。基本上整個事情是一堆P,H1-H6,和UL> LI,OL> LI標籤位於contenteditable div。
內容標籤(沒有UL或OL兒童的P,H1-H6和LI標籤)只能包含STRONG,EM,A,SUB,SUP和SPAN標籤。
我沒有針對IE瀏覽器,但希望在FF和Chrome中運行,而且沒有平臺差異。這些平臺差異之一是在加粗或斜體文本時執行document.execCommand()的方式。 FF在使用標籤時包裝選擇。我決定使用以下方式應用格式:
- 獲取選擇範圍。
- 列出範圍內的所有「內容標籤」。
- 使用範圍對象及其與每個「內容標記」的關係我定義了三個文本塊:選擇之前,選擇和之後。這些都是直接的文字,沒有轉換爲實體的特殊字符。
- 對於每個「內容標籤」innerhtml,我逐個字符地解析分解成每種標籤的「地圖」。我建立了一個標籤層次結構:a> span> sub> sup> em> em。該「地圖」將是這樣的:
爲innerHTML的:this <em>is <strong>a</strong></em> <a href="#"><strong>test</strong>
文本
text: this is a test text
a: __________XXXXXXXXX
strong: ________X_XXXX_____
em: _____XXXX__________
- 使用選擇之前,選擇和選擇文本之後,以及格式化操作,然後我創建一個面具。舉例來說,如果「這是」需要被加粗:面膜是:
text: this is a test text strong: XXXXXXX____________
- 面具與地圖相結合後,生成的地圖是:
text: this is a test text a: __________XXXXXXXXX strong: XXXXXXX_X_XXXX_____ em: _____XXXX__________
- 此地圖被轉換爲HTML:
<strong>this <em>is</em></strong><em> </em><strong><em>a</em></strong> <a href="#"><strong>test</strong>
- 取代 「容器標籤」 的與所得到的HTML的innerHTML。
現在我問這個問題的原因是我需要從html中提取的文本塊和由範圍給我的文本完美匹配。所以我不能轉換任何特殊字符,只能轉換「必要」字符。
我知道這可能不是最簡單或最快的方式去解決這個問題,但我是一個視覺思想家,並以某種方式在2維網格中佈局問題大大有所幫助。
謝謝你的回答,我已經更新了問題,並進一步澄清。我沒有任何相關的代碼。 – Andri
到目前爲止,只有<, >和&字符似乎是必不可少的。接受 – Andri
@Andri:查看我的更新。 – RoToRa