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

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

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

但是,这次Syntaxhighlighter似乎已经忘记了所有已加载的画笔,我收到一条警报,说画笔未加载。

尽管环顾四周并发现2种可能的原因,但我不知道是什么原因造成的:

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的建议的问题。

在之前添加以下代码: loadSyntaxHighLighter()调用:

SyntaxHighlighter.vars.discoveredBrushes=null;

SyntaxHighlighter将被迫在页面上重新发现画笔并加载适当的画笔。

问候
汤姆

09-25 16:24