[原创]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 相关文章推荐
漂亮的提示信息(带箭头)
Mar 21 Javascript
URL地址中的#符号使用说明
Feb 12 Javascript
JQuery操作tr和td内容的方法实例
Mar 06 Javascript
js如何获取object类型里的键值
Feb 18 Javascript
Firefox下无法正常显示年份的解决方法
Sep 04 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
Aug 25 Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
Sep 24 Javascript
复杂的javascript窗口分帧解析
Feb 19 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
May 19 Javascript
vue2滚动条加载更多数据实现代码
Jan 10 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
Mar 13 Javascript
如何让微信小程序页面之间的通信不再变困难
Jun 03 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表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
2011/08/22 PHP
php错误级别的设置方法
2013/06/17 PHP
如何使用php判断所处服务器操作系统的类型
2013/06/20 PHP
PHP5多态性与动态绑定介绍
2015/04/03 PHP
Javascript中获取出错代码所在文件及行数的代码
2010/09/23 Javascript
javascript 隔行换色函数代码
2010/10/24 Javascript
js中的屏蔽的使用示例
2013/07/30 Javascript
jquery配合css简单实现返回顶部效果
2013/09/30 Javascript
深入理解JS函数的参数(arguments)的使用
2016/05/28 Javascript
vuejs动态组件给子组件传递数据的方法详解
2016/09/09 Javascript
详解AngularJs中$resource和restfu服务端数据交互
2016/09/21 Javascript
JavaScript编写九九乘法表(两种任选)
2017/02/04 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
2017/02/26 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
jQuery is not defined 错误原因与解决方法小结
2017/03/19 Javascript
HTML中使背景图片自适应浏览器大小实例详解
2017/04/06 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
浅入深出Vue之自动化路由
2019/08/06 Javascript
仿照Element-ui实现一个简易的$message方法
2020/09/14 Javascript
微信小程序实现首页弹出广告
2020/12/03 Javascript
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
Django读取Mysql数据并显示在前端的实例
2018/05/27 Python
Python pandas DataFrame操作的实现代码
2019/06/21 Python
Python中的self用法详解
2019/08/06 Python
python爬虫基础知识点整理
2020/06/02 Python
python 实现一个图形界面的汇率计算器
2020/11/09 Python
详解pandas赋值失败问题解决
2020/11/29 Python
Lookfantastic挪威官网:英国知名美妆购物网站
2017/07/26 全球购物
eBay比利时购物网站:eBay.be
2019/08/09 全球购物
会计与审计专业大专生求职信
2013/10/03 职场文书
书法培训心得体会
2014/01/05 职场文书
鼓励运动员的广播稿
2014/02/08 职场文书
承诺书模板
2014/08/30 职场文书
六年级上册《闻官军收河南河北》的教学设计
2019/11/15 职场文书
企业内部管理控制:银行存款控制制度范本
2020/01/10 职场文书
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS