在ajax请求之后,Syntaxhighlighter找不到任何画笔

时间:2011-09-22 16:07:51

标签: php javascript syntax-highlighting syntaxhighlighter

我在网页上使用Syntaxhighlighter,我使用了一个javascript函数来使用SyntaxHighlighter.autoloader(...)加载所有画笔并应用SyntaxHighlighter.all()

我在页面加载时运行此函数,结果:语法高亮显示正确应用。

之后,我使用ajax加载一些新内容并运行相同的功能以突出显示新内容。

然而,这次Syntaxhighlighter似乎已经忘记了所有加载的画笔,我收到一条警告说画笔没有加载。

我不知道造成这种情况的原因虽然我环顾四周并找到了两个可能的原因:

An issue on the bitbucket repository

这看起来像解决方案但是当我从存储库中使用解压缩的shCore.js时,我的IDE指示语法错误,并且当我尝试运行它时出现javascript错误。

我在其他类似Stack Overflow帖子的几个答案中找到的另一个解决方案是在加载页面后使用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();
    }
}

有没有人知道如何解决这个问题? (或者有人可以指出我如何在bitbucket上建议更改)

由于

2 个答案:

答案 0 :(得分:2)

我有同样的问题。我刚刚解决了类似于bitbucket的建议。

之前添加以下代码: loadSyntaxHighLighter()致电:

SyntaxHighlighter.vars.discoveredBrushes=null;

语法高亮显示器将被强制重新发现页面上的画笔并加载适当的画笔。

此致 汤姆

答案 1 :(得分:0)

只是初步猜测,你打印出这个结果: 'ahk ' + app.assets + 'js/syntaxhighlighter/brushes/shBrushAhk.js'

如果这种结构没有指向刷子的正确路径,则不会加载它们。确保路径相对于您的相对基本路径是正确的。