Syntaxhighlighter не может найти кисти после запроса ajax - PullRequest
5 голосов
/ 22 сентября 2011

Я использую Syntaxhighlighter на веб-странице, я сделал функцию javascript для загрузки всех кистей, используя SyntaxHighlighter.autoloader (...) и применил SyntaxHighlighter.all ()

Я запускаю эту функцию один раз, когда страница загружается, результат: подсветка синтаксиса применяется правильно.

После этого я загружаю новый контент, используя ajax, и запускаю эту же функцию, чтобы выделить новый контент.

Однако на этот раз Syntaxhighlighter, кажется, забыл обо всех загруженных кистях, я получаю предупреждение о том, что кисть не загружена.

Я понятия не имею, что вызывает это, хотя я огляделся инайдено 2 возможных причины:

Проблема в репозитории bitbucket

Это похоже на решение, но когда я использую распакованный shCore.js из репозитория, моя IDE указывает насинтаксическая ошибка, и я получаю ошибки JavaScript, когда я все равно пытаюсь его запустить.

Другое решение, которое я нашел в нескольких ответах на OTее аналогичные сообщения переполнения стека должны использовать SyntaxHighlighter.highlight () вместо .all () после загрузки страницы.Однако это не работает.

Используемая мной функция:

function loadSyntaxHighLighter() {
    SyntaxHighlighter.autoloader(
            'ahk ' + app.assets + 'js/syntaxhighlighter/brushes/shBrushAhk.js',
            'aps ' + app.assets + 'js/syntaxhighlighter/brushes/shBrushAppleScript.js'
            //...
    );

    SyntaxHighlighter.defaults['toolbar'] = false;

    if (SyntaxHighlighter != 'undefined') {
        SyntaxHighlighter.highlight();
    } else {
        SyntaxHighlighter.all();
    }
}

У кого-нибудь есть идеи, как это исправить?(Или кто-то может указать мне, как я могу внести изменения, предложенные в bitbucket)

Спасибо

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

У меня была такая же проблема. Я только что решил, как предложения Bitbucket.

Добавьте следующий код непосредственно перед: loadSyntaxHighLighter () вызов:

SyntaxHighlighter.vars.discoveredBrushes=null;

SyntaxHighlighter будет вынужден заново открывать кисти на вашей странице и загружать подходящие.

С уважением Том

0 голосов
/ 16 декабря 2011

Просто первоначальное предположение, вы распечатали результат этого: 'ahk ' + app.assets + 'js/syntaxhighlighter/brushes/shBrushAhk.js'?

Если эта конструкция не указывает на правильный путь щеток, они не будут загружены. Также убедитесь, что путь правильный относительно относительного базового пути, которым вы являетесь.

...