php - ajax 请求后,Syntaxhighlighter 找不到任何画笔

标签 php javascript syntax-highlighting syntaxhighlighter

我正在使用 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 上建议的更改)

谢谢

最佳答案

我遇到了同样的问题。我刚刚按照 bitbucket 的建议解决了它。

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

SyntaxHighlighter.vars.discoveredBrushes=null;

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

问候 汤姆

关于php - ajax 请求后,Syntaxhighlighter 找不到任何画笔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7517962/

相关文章:

javascript - 随时间绘制 spaceship 距离

javascript - 如果事件与当前事件相同则触发附加事件

java - 如何在 Haskell 中为 Java 制作语法高亮?

php - usort 不适用于 laravel 多维数组

php - 对未定义函数 geoip_open() 的 fatal error 调用

php - sql + php-插入前检查重复项

syntax-highlighting - 生成 HTML 和/或 RTF 的 RPG 和 CLP 的语法高亮器?

php - 无法取出 XML 的命名空间属性

javascript - react native TypeError (..) 不是一个函数

c++ - QSyntaxHighlighter 和多行注释