2011-10-14 56 views
1

我正在使用JavaScript語法突出顯示器(http://alexgorbatchev.com/SyntaxHighlighter/)。我認爲這個非常有名。如何替換javascript語法熒光筆的內容?

在我的js中,我使用ajax來獲取代碼示例,然後初始化語法突出顯示。當我用不同的參數調用相同的ajax調用時,它會返回不同的代碼示例。問題是我無法替換語法熒光筆的內容。我查找了它的API列表,但我找不到更新或替換其內容的API。

請告訴我。

+0

只需清空包裝器元素,將新內容放入其中,然後在該新代碼上運行語法高亮器。 –

+0

@ŠimeVidas//唯一的問題是語法highligher刪除包裝器元素。 – Moon

+0

然後你需要一個包裝器包裝':P'只需將你的內容包裝在另一個DIV中。 –

回答

1

只需清空包裝器元素,將新內容放入其中,然後在該新代碼上運行語法高亮器。

不應該有任何內存問題。 Afaik,Syntax Highlighter根據你的代碼塊簡單地創建一個DOM結構(帶有DIV的表格等等)。當您從DOM中刪除該表(例如wrapper.innerHTML = '';)時,所有這些元素都會被垃圾收集。

+0

我必須自己設定它,並發現它不是微不足道的。首先,你不能簡單地「再次運行語法高亮器」,因爲每次迭代都會消除類屬性。我想到的細節可以找到:http://stackoverflow.com/questions/15535448/how-to-create-dynamic-content-within-syntaxhighlighter –

+0

@ P.Brian.Mackey是不是設置類在包裝上? –

+0

只要所述元素是由'SyntaxHighlighter.config.tagName'設置的類型,就可以在任何arbirtrary元素上設置該類。一旦處理了一個元素,該類就被刪除(換句話說,畫筆被刪除)。 shCore.cs要求所有元素都有畫筆,例如'class = brush:csharp;'。一旦元素被處理,畫筆被移除,並且使得'SyntaxHighlighter.Highlight()'在下一次迭代中不能發現元素。您可以在findElements()中的shCore.js的第268行上看到此要求。沒有刷子,因爲該類被刪除,所以代碼返回。 –