[原创]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 相关文章推荐
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
Nov 03 Javascript
解析Jquery的LigerUI如何实现文件上传
Jul 09 Javascript
js中document.write使用过程中的一点疑问解答
Mar 20 Javascript
jQuery老黄历完整实现方法
Jan 16 Javascript
JavaScript实现九九乘法表的简单实例
Jun 07 Javascript
在JSP中如何实现MD5加密的方法
Nov 02 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
Nov 24 Javascript
Angular2 组件通信的实例代码
Jun 23 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
Oct 12 Javascript
JS实现提示效果弹出及延迟隐藏的功能
Aug 26 Javascript
如何在Node和浏览器控制台中打印彩色文字
Jan 09 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
Feb 12 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下封装较好的数字分页方法
2010/11/23 PHP
php学习之 循环结构实现代码
2011/06/09 PHP
php字符串截取的简单方法
2013/07/04 PHP
PHP邮箱验证示例教程
2016/06/01 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
用javascript实现改变TEXTAREA滚动条和按钮的颜色,以及怎样让滚动条变得扁平
2007/04/20 Javascript
面向对象的javascript(笔记)
2009/10/06 Javascript
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
2016/01/04 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
Bootstrap列表组学习使用
2017/02/09 Javascript
jquery仿京东商品放大浏览页面
2017/06/06 jQuery
react实现一个优雅的图片占位模块组件详解
2017/10/30 Javascript
详解如何在你的Vue项目配置vux
2018/06/04 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
微信小程序实现随机验证码功能
2018/12/20 Javascript
JS中的算法与数据结构之常见排序(Sort)算法详解
2019/08/16 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
javascript头像上传代码实例
2019/09/28 Javascript
python计算N天之后日期的方法
2015/03/31 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
Flask框架WTForm表单用法示例
2018/07/20 Python
Python算法中的时间复杂度问题
2019/11/19 Python
解决IDEA 的 plugins 搜不到任何的插件问题
2020/05/04 Python
使用css3和jquery实现可伸缩搜索框
2014/02/12 HTML / CSS
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
DataReader和DataSet的异同
2014/12/31 面试题
房地产员工找工作的自我评价
2013/11/15 职场文书
大学生个人自荐信
2014/02/24 职场文书
2014年党务公开实施方案
2014/02/27 职场文书
行政执法作风整顿剖析材料
2014/10/11 职场文书
全国爱牙日活动总结
2015/02/05 职场文书
高校教师个人总结
2015/02/10 职场文书
Log4j.properties配置及其使用
2021/08/02 Java/Android
一文搞懂Golang 时间和日期相关函数
2021/12/06 Golang