[原创]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 简单高效判断数据类型 系列函数 By shawl.qiu
Mar 06 Javascript
使用jQuery的ajax功能实现的RSS Reader 代码
Sep 03 Javascript
基于mootools 1.3框架下的图片滑动效果代码
Apr 22 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
Apr 07 Javascript
前台js改变Session的值(用ajax实现)
Dec 28 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
Apr 15 Javascript
jQuery ajax调用WCF服务实例
Jul 16 Javascript
基于javascript实现右下角浮动广告效果
Jan 08 Javascript
jQuery事件绑定on()与弹窗实现代码
Apr 28 Javascript
Vue中使用clipboard实现复制功能
Sep 05 Javascript
sortable+element 实现表格行拖拽的方法示例
Jun 07 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
Sep 04 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
php面向对象全攻略 (十二) 抽象方法和抽象类
2009/09/30 PHP
php创建基本身份认证站点的方法详解
2013/06/08 PHP
php使用百度ping服务代码实例
2014/06/19 PHP
PHP中的插件机制原理和实例
2014/07/08 PHP
ThinkPHP自动填充实现无限级分类的方法
2014/08/22 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
php微信开发自定义菜单
2016/08/27 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
2016/10/11 PHP
Yii框架中sphinx索引配置方法解析
2016/10/18 PHP
使用WAMP搭建PHP本地开发环境
2017/05/10 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
JavaScript 给汉字排序实例代码
2008/06/28 Javascript
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
js中根据字数截取字符串,不能截断url
2012/01/12 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
jQuery接受后台传递的List的实例详解
2017/08/02 jQuery
requireJS模块化实现返回顶部功能的方法详解
2017/10/16 Javascript
Angular6项目打包优化的实现方法
2019/12/15 Javascript
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
浅谈python3中input输入的使用
2019/08/02 Python
决策树剪枝算法的python实现方法详解
2019/09/18 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
2020/01/04 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
Sam’s Club山姆会员商店:沃尔玛旗下高端会员制商店
2017/01/16 全球购物
学年末自我鉴定
2014/01/21 职场文书
收银员的岗位职责范本
2014/02/04 职场文书
文明寝室标语
2014/06/13 职场文书
大学生学习计划书
2014/09/15 职场文书
当幸福来敲门观后感
2015/06/01 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书