我在网页上使用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将被迫在页面上重新发现画笔并加载适当的画笔。
问候
汤姆