[原创]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 相关文章推荐
一个加密JavaScript的开源工具PACKER2.0.2
Nov 04 Javascript
为jQuery增加join方法的实现代码
Nov 28 Javascript
九种js弹出对话框的方法总结
Mar 12 Javascript
JavaScript插件化开发教程(六)
Feb 01 Javascript
js中substring和substr两者区别和使用方法
Nov 09 Javascript
JS实现图片剪裁并预览效果
Aug 12 Javascript
jquery点击展示与隐藏更多内容
Dec 03 Javascript
原生node.js案例--前后台交互
Feb 20 Javascript
JS监控关闭浏览器操作的实例详解
Sep 12 Javascript
vue实现动态添加数据滚动条自动滚动到底部的示例代码
Jul 06 Javascript
react 中父组件与子组件双向绑定问题
May 20 Javascript
微信小程序实现菜单左右联动
May 19 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
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
PHP遍历目录并返回统计目录大小
2014/06/09 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
微信公众平台开发实现2048游戏的方法
2015/04/15 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
jQuery 渐变下拉菜单
2009/12/15 Javascript
基于jquery的Repeater实现代码
2010/07/17 Javascript
jquery 插件学习(一)
2012/08/06 Javascript
JavaScript获取和设置CheckBox状态的简单方法
2013/07/05 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
2017/03/30 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
JavaScript实现快速排序的方法分析
2018/01/10 Javascript
基于Vuejs的搜索匹配功能实现方法
2018/03/03 Javascript
layui table设置前台过滤转义等方法
2018/08/17 Javascript
JavaScript代码调试方法实例小结
2019/01/05 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
2019/05/03 Javascript
前端路由&amp;webpack基础配置详解
2019/06/10 Javascript
如何利用python查找电脑文件
2018/04/27 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2020/01/08 Python
解决python父线程关闭后子线程不关闭问题
2020/04/25 Python
css3旋转木马_动力节点Java学院整理
2017/07/12 HTML / CSS
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
泰国Robinson百货官网:购买知名品牌的商品
2020/02/08 全球购物
学校采购员岗位职责
2014/01/02 职场文书
幼儿园门卫岗位职责
2014/02/14 职场文书
法院授权委托书格式
2014/09/28 职场文书
学校中秋节活动总结
2015/03/23 职场文书
干部考核工作总结2015
2015/07/24 职场文书
2019暑假学生安全口号
2019/06/27 职场文书
PHP解决高并发问题
2021/04/01 PHP
详解Java ES多节点任务的高效分发与收集实现
2021/06/30 Java/Android
CSS3 Tab动画实例之背景切换动态效果
2021/08/23 HTML / CSS
日元符号 ¥
2022/02/17 杂记
MySQL时区造成时差问题
2022/04/13 MySQL