[原创]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 相关文章推荐
摘自百度的图片轮换效果代码
Nov 19 Javascript
支持ie与FireFox的剪切板操作代码
Sep 28 Javascript
Angular.js回顾ng-app和ng-model使用技巧
Apr 26 Javascript
原生js实现弹出层登录拖拽功能
Dec 05 Javascript
AngularJS动态菜单操作指令
Apr 25 Javascript
利用CDN加速react webpack打包后的文件详解
Feb 22 Javascript
vue 中filter的多种用法
Apr 26 Javascript
JavaScript中的回调函数实例讲解
Jan 27 Javascript
layui操作列按钮个数和文字颜色的判断实例
Sep 11 Javascript
element-ui 本地化使用教程详解
Oct 28 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
Nov 01 Javascript
openLayer4实现动态改变标注图标
Aug 17 Javascript
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
PHP5+UTF8多文件上传类
2008/10/17 PHP
thinkPHP5.0框架简单配置作用域的方法
2017/03/17 PHP
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
整理的比较全的event对像在ie与firefox浏览器中的区别
2013/11/25 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
2014/09/26 Javascript
用JavaScript实现对话框的教程
2015/06/04 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
AngularJS 监听变量变化的实现方法
2018/10/09 Javascript
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
js中数组常用方法总结(推荐)
2019/04/09 Javascript
小程序Scroll-view上拉滚动刷新数据
2020/06/21 Javascript
微信小程序连续签到7天积分获得功能的示例代码
2020/08/20 Javascript
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
Python浅拷贝与深拷贝用法实例
2015/05/09 Python
python 中的int()函数怎么用
2017/10/17 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
pandas取出重复数据的方法
2019/07/04 Python
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
露营世界:Camping World
2017/02/02 全球购物
Ibatis的核心配置文件都有什么
2014/09/08 面试题
医学检验专业大学生求职信
2013/11/18 职场文书
简历上的自我评价怎么写
2014/01/28 职场文书
高级工程师英文求职信
2014/03/19 职场文书
协会周年庆活动方案
2014/08/26 职场文书
个人党性锻炼总结
2015/03/05 职场文书
工作态度恶劣检讨书
2015/05/06 职场文书
离婚起诉书范本
2015/05/18 职场文书
音乐之声观后感
2015/06/04 职场文书
超市啤酒狂欢夜策划方案范文!
2019/07/03 职场文书
导游词之西安大清真寺
2019/12/17 职场文书
Golang 实现WebSockets
2022/04/24 Golang