[原创]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 密码强度判断代码
Sep 05 Javascript
jquery 删除字符串最后一个字符的方法解析
Feb 11 Javascript
jquery.cookie.js实现用户登录保存密码功能的方法
Apr 15 Javascript
JavaScript知识点总结(十)之this关键字
May 31 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
Jul 18 Javascript
利用bootstrapValidator验证UEditor
Sep 14 Javascript
Vue数据驱动模拟实现5
Jan 13 Javascript
JavaScript监听手机物理返回键的两种解决方法
Aug 14 Javascript
angular中不同的组件间传值与通信的方法
Nov 04 Javascript
基于element-ui的rules中正则表达式
Sep 04 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
May 22 Javascript
Vue项目打包编译优化方案
Sep 16 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 smarty 二级分类代码和模版循环例子
2011/06/16 PHP
PHP抽象类 介绍
2012/06/13 PHP
phpExcel中文帮助手册之常用功能指南
2014/08/18 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
PHP等比例压缩图片的实例代码
2018/07/26 PHP
javascript的函数
2007/01/31 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
2013/02/07 Javascript
jquery隔行换色效果实现方法
2015/01/15 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
js图片翻书效果代码分享
2015/08/20 Javascript
JS代码防止SQL注入的方法(超简单)
2016/04/12 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
js 索引下标之li集合绑定点击事件
2018/01/12 Javascript
pace.js和NProgress.js两个加载进度插件的一点小总结
2018/01/31 Javascript
vue-cli3全面配置详解
2018/11/14 Javascript
JS函数进阶之继承用法实例分析
2020/01/15 Javascript
Node.js文本文件BOM头的去除方法
2020/11/22 Javascript
Python random模块常用方法
2014/11/03 Python
Python中列表、字典、元组、集合数据结构整理
2014/11/20 Python
对Python的Django框架中的项目进行单元测试的方法
2016/04/11 Python
python递归法实现简易连连看小游戏
2020/03/25 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
python 基于wx实现音乐播放
2020/11/24 Python
纯CSS3制作漂亮带动画效果的主机价格表
2015/04/25 HTML / CSS
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
世界上最大的汽车共享网站:Zipcar
2017/01/14 全球购物
美国眼镜网:GlassesUSA
2017/09/07 全球购物
写好自荐信的要点
2013/11/06 职场文书
公司运动会策划方案
2014/05/25 职场文书
乡镇干部个人对照检查材料思想汇报
2014/10/04 职场文书
财务会计岗位职责
2015/02/03 职场文书
高中生军训感言
2015/08/01 职场文书
php+laravel 扫码二维码签到功能
2021/05/15 PHP
Java练习之潜艇小游戏的实现
2022/03/16 Java/Android