[原创]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查看html源文件
Nov 08 Javascript
firefox和IE系列的相关区别整理 以备后用
Dec 28 Javascript
XMLHTTPRequest的属性和方法简介
Nov 23 Javascript
js局部刷新页面时间具体实现
Jul 04 Javascript
JS 精确统计网站访问量的实例代码
Jul 05 Javascript
javascript 获取浏览器版本
Jan 21 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
Jul 31 Javascript
angular.js实现购物车功能
Oct 23 Javascript
Vue.directive 自定义指令的问题小结
Mar 04 Javascript
vue devtools的安装与使用教程
Aug 08 Javascript
vee-validate vue 2.0自定义表单验证的实例
Aug 28 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
Jan 30 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计算当前程序执行时间示例
2014/04/24 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
2019/06/13 PHP
Js的MessageBox
2006/12/03 Javascript
jquery随机展示头像代码
2011/12/21 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
2015/03/01 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
BootStrap组件之进度条的基本用法
2017/01/19 Javascript
JS实现商品筛选功能
2020/08/19 Javascript
vue 监听屏幕高度的实例
2018/09/05 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
详解小程序如何改变onLoad的执行时机
2019/11/01 Javascript
Vue监听滚动实现锚点定位(双向)示例
2019/11/13 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
Vue Router的手写实现方法实现
2020/03/02 Javascript
vue-cli点击实现全屏功能
2020/03/07 Javascript
vue穿梭框实现上下移动
2021/01/29 Vue.js
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
Python使用sftp实现上传和下载功能(实例代码)
2017/03/14 Python
Python语言实现百度语音识别API的使用实例
2017/12/13 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
python生成requirements.txt的两种方法
2019/09/18 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
如何基于python对接钉钉并获取access_token
2020/04/21 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
H5页面适配iPhoneX(就是那么简单)
2019/12/02 HTML / CSS
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
英国儿童鞋和靴子:Start-Rite
2019/05/06 全球购物
会计与审计专业自荐信范文
2014/03/15 职场文书
《画家乡》教学反思
2014/04/22 职场文书
检讨书范文大全
2015/05/07 职场文书
惊天动地观后感
2015/06/10 职场文书