我有一個內容編輯<div>
。用適合JavaScript的HTML包裝降價
當在div中輸入正確的markdown語法時,我需要它在外部添加正確的HTML,但在其中保留標記的字符。例如:
# My H1
將被解析到
<h1># My H1</h1>
這是類似的iA作家的行爲方式,而且我認爲笑談確實也是如此。
那裏的任何東西都是這樣的嗎?
我有一個內容編輯<div>
。用適合JavaScript的HTML包裝降價
當在div中輸入正確的markdown語法時,我需要它在外部添加正確的HTML,但在其中保留標記的字符。例如:
# My H1
將被解析到
<h1># My H1</h1>
這是類似的iA作家的行爲方式,而且我認爲笑談確實也是如此。
那裏的任何東西都是這樣的嗎?
在我的理解中,您正試圖用一種語法高亮創建一個Markdown編輯器。我喜歡這個主意,但我認爲現在還沒有這樣的東西。 Markdown被設計爲"easy-to-read/easy-to-write",足以避免使用複雜的編輯器。例如Pagedown對這個原則有點不利(即使它是一個很好的工具)。
無論如何,如果你想要實現自己會擁有多種選擇:降價轉換器的
上游通過改變
# My H1
到
# # My H1
下游降價轉換器通過更改
<h1>My H1</h1>
到
<h1># My H1</h1>
但是,這並不是因爲降價是不是雙射的,我想你不希望有這種轉換的首選方式:
My H1
=====
到
<h1># My H1</h1>
修改降價轉換器,如果你有權訪問源代碼或創建你自己的。
在任何情況下,您都必須流利地使用正則表達式。
,如果你正在處理一個很好形成DOM - 看看jQuery的包裝功能
.wrap()
.wrapAll()
.wrapInner()
我不認爲這將用於此用例。他需要在元素內部包裝任意文本內容,而不是HTML元素。 – 2013-05-15 22:12:00
您可以開始閱讀關於this stackoverflow question的內容。
您可以使用方法拆分和載體返回作爲正則表達式來分析行中的文本。然後將文本分成一個數組,您可以使用document.createElement()
動態創建新元素,如h1
標籤。然後將這些標籤添加到內容顯示器,您將完成格式。
你必須要注意,有很多工作要做的,因爲你必須考慮到多種情況:
一旦認爲所有這些技巧和一點點的JavaScript代碼,你會擁有它。
UPDATE:當然,如果你想用自己的語法策略創建自己的庫(我建議將它與jQuery混合使用)。如果這不是你的目的,你可以帶一些已發佈在其他答案上的圖書館。
你如何確定哪些文字被包裹在哪些元素中? – Schleis 2013-05-09 17:05:37
@Schleis,markdown語法。 – alt 2013-05-09 22:58:56