sim*_*mon 3 javascript syntax-highlighting
我从http://alexgorbatchev.com/SyntaxHighlighter/获得了SyntaxHighlighter
我不能让自动加载器工作.我究竟做错了什么?
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<link href="styles/shCore.css" rel="stylesheet" type="text/css" />
<link href="styles/shCoreDefault.css" rel="stylesheet" type="text/css" />
<script src="scripts/shCore.js" type="text/javascript"></script>
<script src="scripts/shAutoloader.js" type="text/javascript"></script>
<script type="text/javascript">
SyntaxHighlighter.autoloader('js scripts/shBrushJScript.js');
SyntaxHighlighter.all();
</script>
</head>
<body>
<pre class="brush: js">
function foo()
{
}
</pre>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我确保我的网址/脚本路径是正确的.
这有效,但我真的很想让自动加载器工作.
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<link href="styles/shCore.css" rel="stylesheet" type="text/css" />
<link href="styles/shCoreDefault.css" rel="stylesheet" type="text/css" />
<script src="scripts/shCore.js" type="text/javascript"></script>
<script src="scripts/shBrushJScript.js" type="text/javascript"></script>
<script type="text/javascript">
SyntaxHighlighter.all();
</script>
</head>
<body>
<pre class="brush: js">
function foo()
{
}
</pre>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
小智 6
要使"SyntaxHighlighter.autoloader"工作,您应该移动"pre"部分下的行或将其放入文档就绪的回调中.
"自动加载器"方法检查当前加载的"预"部分并请求相应的画笔.因此,如果它在加载body元素之前执行,则不会加载画笔.
我的回答是在撰写本文时处理最新版本的SyntaxHighlighter,版本为3.0.83.
我也遇到了这个问题然后我尝试了该autoloader 函数的替代语法,即使使用相对路径它也适用于我.请将以下代码放在页面底部所有标记下方<pre>:
<script type="text/javascript" src="js/shCore.js"></script>
<script type="text/javascript" src="js/shAutoloader.js" ></script>
<script type="text/javascript">
SyntaxHighlighter.autoloader(
['js','jscript','javascript','js/shBrushJScript.js'],
['bash','shell','js/shBrushBash.js'],
['css','js/shBrushCss.js'],
['xml','js/shBrushXml.js'],
['sql','js/shBrushSql.js'],
['php','js/shBrushPhp.js']
);
SyntaxHighlighter.all();
</script>
Run Code Online (Sandbox Code Playgroud)
请注意,SyntaxHighlighter网站上有关替代语法的文档目前是错误的.它建议您在数组中放入一个数组,并且还必须使用完整路径.两者都是误导性陈述,因为下面就无法工作,并不会引发错误之一:
SyntaxHighlighter.autoloader([ [ 'alias1', 'alias2', '/full/path/to/brush.js' ] ])
Run Code Online (Sandbox Code Playgroud)
事实是,使用替代语法,你只需要放入一系列数组(不需要父数组!),就像这样,并且可以有相对或绝对路径:
SyntaxHighlighter.autoloader([ 'alias1', 'alias2', 'path/to/brush.js' ], [ 'alias1', 'alias2', 'path/to/brush2.js' ]),
Run Code Online (Sandbox Code Playgroud)
另外,我必须注意到我在使用未编辑的SyntaxHighlighter版本(src与SyntaxHighlighter捆绑的文件夹下的文件)时遇到问题.它要求XRegExp可以在这里下载的库:http://xregexp.com/.然而,甚至包括这个库后(由于某种原因并没有需要列入缩小的版本-很奇怪,我知道!)的代码仍然被扔的错误.总之,我使用缩小版本(在scripts目录下可用)没有问题.
要完成这个答案,这是我完全工作的SyntaxHighlighter自动加载器代码:
<!DOCTYPE>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Hello SyntaxHighlighter</title>
<link type="text/css" rel="stylesheet" href="styles/shCore.css"/>
<link type="text/css" rel="stylesheet" href="styles/shThemeDefault.css"/>
</head>
<body style="background: white; font-family: Helvetica">
<h1>Hello SyntaxHighlighter</h1>
<pre class="brush: js;">
function helloSyntaxHighlighter()
{
return "hi!";
}
</pre>
<script type="text/javascript" src="js/shCore.js"></script>
<script type="text/javascript" src="js/shAutoloader.js" ></script>
<script type="text/javascript">
SyntaxHighlighter.autoloader(
['js','jscript','javascript','js/shBrushJScript.js'],
['bash','shell','js/shBrushBash.js'],
['css','js/shBrushCss.js'],
['xml','js/shBrushXml.js'],
['sql','js/shBrushSql.js'],
['php','js/shBrushPhp.js']
);
SyntaxHighlighter.all();
</script>
</html>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2952 次 |
| 最近记录: |