2011-09-22 57 views
5

我在網頁上使用Syntaxhighlighter,我已經使用SyntaxHighlighter.autoloader(...)加載了所有畫筆並應用了SyntaxHighlighter.all()Syntaxhighlighter在ajax請求後無法找到任何畫筆

當頁面被加載時,我運行這個函數一次,結果:語法高亮得到正確應用。

之後,我使用ajax加載一些新內容,並運行相同的函數以突出顯示新內容。

但是,這次Syntaxhighlighter似乎已經忘記了所有加載的畫筆,我得到一個警告說畫筆沒有加載。

我不知道是什麼原因造成這個雖然我環顧四周,發現2個可能的原因:

An issue on the bitbucket repository

這看起來像解決方案,但是當我用解壓shCore.js從倉庫中我IDE表示一個語法錯誤,當我試圖運行它時,我得到了javascript錯誤。

我在其他類似堆棧溢出文章的幾個答案中找到的另一個解決方案是在頁面加載後使用SyntaxHighlighter.highlight()而不是.all()。然而,這不起作用。

功能我用:

function loadSyntaxHighLighter() { 
    SyntaxHighlighter.autoloader(
      'ahk ' + app.assets + 'js/syntaxhighlighter/brushes/shBrushAhk.js', 
      'aps ' + app.assets + 'js/syntaxhighlighter/brushes/shBrushAppleScript.js' 
      //... 
    ); 

    SyntaxHighlighter.defaults['toolbar'] = false; 

    if (SyntaxHighlighter != 'undefined') { 
     SyntaxHighlighter.highlight(); 
    } else { 
     SyntaxHighlighter.all(); 
    } 
} 

有沒有人對如何解決這一問題的任何想法? (或者可有人點我了我怎麼能做出到位桶建議改變)

感謝

回答

0

只是一個最初的猜測,你有沒有印出來的這個結果: 'ahk ' + app.assets + 'js/syntaxhighlighter/brushes/shBrushAhk.js'

如果這種結構不指向正確的刷子路徑,它們不會被加載。請確保路徑與您所在的相對基本路徑相關。

2

我有同樣的問題。我剛剛解決了它類似於bitbucket的建議。

添加以下之前代碼:loadSyntaxHighLighter()調用

SyntaxHighlighter.vars.discoveredBrushes=null; 
SyntaxHighlighter的

將被迫重新發現你的網頁在刷子上並加載appopriate的。

Registers Tom

+1

這幫了我!非常感謝(即使從那時起已經差不多4年了) –