Syntaxhighlighter автозагрузчик - PullRequest
3 голосов
/ 28 марта 2011

Я получил SyntaxHighlighter от http://alexgorbatchev.com/SyntaxHighlighter/

Я не могу заставить работать автозагрузчик.Что я делаю не так?

<code><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()
{
}

Я убедился, что мои URL / пути к скриптам верны.

Это работает,но мне бы очень хотелось, чтобы автозагрузчик работал.

<code><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()
{
}

Ответы [ 5 ]

6 голосов
/ 29 января 2013

Мой ответ касается последней версии 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>

Обратите внимание, что документация об альтернативном синтаксисе на сайте SyntaxHighlighterздесь в настоящее время неправильно .Он предполагает, что вы помещаете массив в массив, а также что вы должны использовать полные пути.Оба являются вводящими в заблуждение утверждениями, потому что следующее не работает и не выдается никакой ошибки:

SyntaxHighlighter.autoloader([ [ 'alias1', 'alias2', '/full/path/to/brush.js' ] ])

Правда в том, что для использования альтернативного синтаксиса, который вы только что поместили в серию массивов (родительский массив не требуется!), так же, как и может иметь относительные или абсолютные пути:

SyntaxHighlighter.autoloader([ 'alias1', 'alias2', 'path/to/brush.js' ], [ 'alias1', 'alias2', 'path/to/brush2.js' ]),

Кроме того, я должен отметить, что у меня возникла проблема с использованием незавершенной версии SyntaxHighlighter (файл под src папка в комплекте с SyntaxHighlighter).Он запрашивал библиотеку XRegExp, которую можно скачать здесь: http://xregexp.com/. Однако, даже после включения этой библиотеки (которая по какой-то причине не должна быть включена в уменьшенную версию -очень странно я знаю!) код все равно выкидывал ошибки.Таким образом, я использовал минимизированную версию (доступную в каталоге scripts) без проблем.

Чтобы завершить этот ответ, вот мой полностью рабочий код автозагрузчика SyntaxHighlighter:

<code><!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!";
}
6 голосов
/ 30 марта 2011

Чтобы заставить работать «SyntaxHighlighter.autoloader», вы должны переместить строку под ваши «pre» разделы или поместить ее в обратный вызов готового документа.

Метод «автозагрузчик» проверяет текущие загруженные «пред» секции и запрашивает соответствующие кисти.Поэтому, если он выполняется до загрузки элемента body, кисть не будет загружена.

0 голосов
/ 17 мая 2013
<code>    <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>
</head>
<body>


<pre class="brush: js">
function foo()
{
}
0 голосов
/ 22 октября 2012

Для людей, читающих это в будущем, по какой-то причине путь сценария shAutoloader.js заблокирован в ...

То есть, если вы хотите, чтобы он загружался автоматически, вам нужно будет указать его следующим образом: js/syntaxhighlighter/shAutoloader.js вместе с остальными языковыми скриптами.

Это глупо, но если кто-нибудь знает, как это исправить, дайте мне знать: D

0 голосов
/ 29 июля 2012

Попробуйте:

<script type="text/javascript">
    window.onload = function ()
    {
        SyntaxHighlighter.autoloader('js scripts/shBrushJScript.js');
        SyntaxHighlighter.all();
    }
</script>
...