我已经开始使用SyntaxHighlighter来满足语法突出显示的需要。
然而,我意识到它在移动设备上不起作用。类似地,它通常在桌面浏览器上不起作用,但有时是这样的。
它通常默认为<pre>
样式,因为SyntaxHighlighter不会将<pre>
转换为自己的样式<div>
但有时它会做它应该做的事情:
(你可以在我的网站家庭作业生活上看到这种效果。)
在脚本调用它之前,我已经确保了包含语法荧光笔的脚本,并且我的脚本在页面加载时运行。
但是,如果我在页面加载后调用SyntaxHighlighter.all()
或SyntaxHighlighter.highlight()
(使用Chrome的开发控制台),它就会对其进行转换。但它为什么不自动这么做呢?谢谢。
发布于 2015-12-19 15:26:27
这是一个错误,当你调用你的荧光笔方法。
动态地将代码加载到HTML中。现在,当文档准备好后,它将调用您的荧光笔,但是由于您想要高亮显示的代码不在硬编码的HTML中,而是稍后加载,所以荧光笔可能无法找到它。
在$.getJSON
中加载所有内容,在这个方法完成后,您可以在HTML中突出显示代码,这意味着您可以调用SyntaxHighlighter.all()
。您所要做的就是将荧光笔添加到这个函数中,以便在正确的时间调用它。
$.getJSON("posts/posts.json", function(data) {
$.each(data, function(i, post) {
var newElement = $("<div>");
newElement.addClass("post");
newElement.append("<span class='details'>By " + post.author + "<br />On " + post.time + "</span>");
newElement.append("<span class='title'>" + post.title + "</span>");
newElement.append("<blockquote class='content'>" + post.content + "</blockquote>");
$("div#posts").append(newElement);
});
// Now you loaded all your Content in your HTML and you're able to make that code fancy!
SyntaxHighlighter.all();
SyntaxHighlighter.highlight();
});
https://stackoverflow.com/questions/34372065
复制相似问题