[原创]SyntaxHighlighter自动识别并加载脚本语言


Posted in Javascript onFebruary 07, 2017

SyntaxHighlighter是一个使用JavaScript编写的支持多种编程语言语法高亮的JS插件,很多大型网站或博客都在使用。

SyntaxHighlighter插件默认是每种编程语言加载对应JS语言库,那么如何实现SyntaxHighlighter自动加载不同语言的JS语言库

SyntaxHighlighter官方已经给出了解决方案 shAutoloader.js 自动加载库;

在HTML文件中引用SyntaxHighlighter核心运行库

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Hello SyntaxHighlighter</title>
<script type="text/javascript" src="scripts/shCore.js"></script>
<script type="text/javascript" src="scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="styles/shCore.css" rel="external nofollow" rel="external nofollow" />
<link type="text/css" rel="stylesheet" href="styles/shCoreDefault.css" rel="external nofollow" rel="external nofollow" />

</head>

shCore.js

 SyntaxHighlighter插件的核心运行库

shAutoloader.js

 自动加载运行库要实现自动加载必须引入此文件

shCore.css

 核心CSS样式

shCoreDefault.css

主题CSS样式

以上四个文件必须引用到文档中

需要高亮显示的代码请入在 <pre class="brush:js;"></pre>

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Hello SyntaxHighlighter</title>
<script type="text/javascript" src="scripts/shCore.js"></script>
<script type="text/javascript" src="scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="styles/shCore.css" rel="external nofollow" rel="external nofollow" />
<link type="text/css" rel="stylesheet" href="styles/shCoreDefault.css" rel="external nofollow" rel="external nofollow" />
</head>
 
<body>
<h1>Hello SyntaxHighlighter</h1>
<pre class="brush: js;">
function helloSyntaxHighlighter()
{
return "hi!";
}
</pre>

<pre class="brush: js;"> 中的 class="brush: js;"是根据显示代码语言而定

下面是实现SyntaxHighlighter自动加载的主要代码

<script language="javascript">
function path(){
	var args = arguments,
		result = [];
	for(var i = 0; i < args.length; i++)
		result.push(args[i].replace('@', '/pub/sh/current/scripts/'));//请替换成自己项目中SyntaxHighlighter的具体路径
	return result
};
SyntaxHighlighter.autoloader.apply(null, path(
'applescript		@shBrushAppleScript.js',
'actionscript3 as3		@shBrushAS3.js',
'bash shell		@shBrushBash.js',
'coldfusion cf		@shBrushColdFusion.js',
'cpp c			@shBrushCpp.js',
'c# c-sharp csharp		@shBrushCSharp.js',
'css			@shBrushCss.js',
'delphi pascal		@shBrushDelphi.js',
'diff patch pas		@shBrushDiff.js',
'erl erlang		@shBrushErlang.js',
'groovy			@shBrushGroovy.js',
'java			@shBrushJava.js',
'jfx javafx		@shBrushJavaFX.js',
'js jscript javascript	@shBrushJScript.js',
'perl pl			@shBrushPerl.js',
'php			@shBrushPhp.js',
'text plain		@shBrushPlain.js',
'py python			@shBrushPython.js',
'ruby rails ror rb		@shBrushRuby.js',
'sass scss			@shBrushSass.js',
'scala			@shBrushScala.js',
'sql			@shBrushSql.js',
'vb vbnet			@shBrushVb.js',
'xml xhtml xslt html		@shBrushXml.js'
));
SyntaxHighlighter.all();
</script>

以上就是实现SyntaxHighlighter自动识别语言并自动载语言库的代码,需要的同学可以测试下;

本文实例下载:SyntaxHighlighter自动识别并加载

Javascript 相关文章推荐
js可突破windows弹退效果代码
Aug 09 Javascript
Ruffy javascript 学习笔记
Nov 30 Javascript
ExtJS 设置级联菜单的默认值
Jun 13 Javascript
为Extjs加加速(javascript加速)
Aug 19 Javascript
JavaScript中使用Substring删除字符串最后一个字符
Nov 03 Javascript
浅谈javascript 迭代方法
Jan 21 Javascript
JS实现可展开折叠层的鼠标拖曳效果
Oct 09 Javascript
javascript实现对表格元素进行排序操作
Nov 18 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
Dec 01 Javascript
javascript的理解及经典案例分析
May 20 Javascript
手动下载Chrome并解决puppeteer无法使用问题
Nov 12 Javascript
vue-router中hash模式与history模式的区别
Jun 23 Vue.js
javascript表达式和运算符详解
Feb 07 #Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
Feb 07 #Javascript
原生js和css实现图片轮播效果
Feb 07 #Javascript
bootstrap输入框组使用方法
Feb 07 #Javascript
angularjs使用directive实现分页组件的示例
Feb 07 #Javascript
Bootstrap下拉菜单样式
Feb 07 #Javascript
基于JavaScript实现购物车功能
Feb 07 #Javascript
You might like
使用adodb lite解决问题
2006/12/31 PHP
dedecms中常见问题修改方法总结
2007/03/21 PHP
使用php判断服务器是否支持Gzip压缩功能
2013/09/24 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
2014/06/21 PHP
thinkphp配置连接数据库技巧
2014/12/02 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
2019/10/12 PHP
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
ejs v9 javascript模板系统
2012/03/21 Javascript
JS 实现Json查询的方法实例
2013/04/12 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
2013/11/14 Javascript
JavaScript闭包函数访问外部变量的方法
2014/08/27 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
JavaScript分析、压缩工具JavaScript Analyser
2014/12/31 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
基于twbsPagination.js分页插件使用心得(分享)
2017/10/21 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
微信小程序实现左右列表联动
2020/05/19 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
Python挑选文件夹里宽大于300图片的方法
2015/03/05 Python
理解Python垃圾回收机制
2016/02/12 Python
Python学习入门之区块链详解
2017/07/25 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
2017/12/20 Python
Python进度条实时显示处理进度的示例代码
2018/01/30 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
python 调用钉钉机器人的方法
2019/02/20 Python
Python关于反射的实例代码分享
2020/02/20 Python
python实现超级马里奥
2020/03/18 Python
在keras里实现自定义上采样层
2020/06/28 Python
python用Configobj模块读取配置文件
2020/09/26 Python
Linux中如何用命令创建目录
2016/12/02 面试题
行政人员岗位职责
2013/12/08 职场文书
地理教师岗位职责
2014/03/16 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
2014年文学毕业生自我鉴定
2014/04/23 职场文书
交通志愿者活动总结
2014/06/27 职场文书
Centos系统通过Docker安装并搭建MongoDB数据库
2022/04/12 MongoDB