2011-09-22 56 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年了) –