最近在写博客的时候,使用的编辑器就是传说中的编辑神器——UEditor。
在使用过程中,还是多多少少遇到一些问题,这篇文章来总结一下语法高亮方面的配置以及遇到的一些问题。
1.配置语法高亮
在编辑器中,默认的就有“语法高亮”的功能,编辑保存后,默认的是使用<pre>标签包含的一段代码。
在前端网页展示时,就需要引入相关的第三方插件,并调用其方法进行着色。
具体代码如下,在<head>插入相应的样式和脚本,然后页面加载完成后调用方法进行着色(这里用到JQuery):
<link href="ueditor/third-party/SyntaxHighlighter/shCoreDefault.css" rel="stylesheet" type="text/css" />
<script src="ueditor/third-party/SyntaxHighlighter/shCore.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
SyntaxHighlighter.highlight();
});
</script>2.修复不会自动换行问题
如果你的内容展示区域不够宽的话,那么代码如果超过显示区域的宽度后,仍然会继续延伸。
上网搜索了一下,发现是语法高亮的插件的样式没有强制换行倒置的。
打开“shCoreDefault.css”文件,找到下面这段,并加载强制换行的属性即可。
具体代码如下:
.syntaxhighlighter
{
width: 100% !important;
margin: .3em 0 .3em 0 !important;
position: relative !important;
overflow: auto !important;
background-color: #f5f5f5 !important;
border: 1px solid #ccc !important;
border-radius: 4px !important;
border-collapse: separate !important;
word-break:break-all; /* dier add this */
}3.修复行号错位问题
当修复了自动换行的问题后,另一个问题也随之而来。
因为一行代码显示成两行了,而左侧的行号并未因为而做出改变。这样就会造成高度不统一而错位了。
又上网搜索了一下,发现已经有人写了脚本处理相应的问题了。
具体代码如下:
<script type="text/javascript">
$(function(){
SyntaxHighlighter.highlight();
$("table.syntaxhighlighter").each(function () {
if (!$(this).hasClass("nogutter")) {
var $gutter = $($(this).find(".gutter")[0]);
var $codeLines = $($(this).find(".code .line"));
$gutter.find(".line").each(function (i) {
$(this).height($($codeLines[i]).height());
$($codeLines[i]).height($($codeLines[i]).height());
});
}
});
});
</script>4.修复改变浏览器窗口大小时又不行了
然而又有问题了,对应强迫症的我怎么受得了呢?
具体代码如下:
<script type="text/javascript">
$(window).resize(function(){
$("table.syntaxhighlighter").each(function () {
if (!$(this).hasClass("nogutter")) {
var $gutter = $($(this).find(".gutter")[0]);
var $codeLines = $($(this).find(".code .line"));
$gutter.find(".line").each(function (i) {
$(this).height($($codeLines[i]).height());
$($codeLines[i]).height($($codeLines[i]).height());
});
}
});
});
</script>至此,终于搞定了语法高亮插件的问题。
OK,写出来希望各位遇到问题的童鞋不要碰壁太久。
上一篇:插件开发,理解jquery的$.extend()、$.fn和$.fn.extend()
下一篇:php报错:Deprecated: Assigning the return value of new by reference is deprecated in