Показать сообщение отдельно
  #116 (permalink)  
Старый 19.10.2012, 09:50
Новичок на форуме
Отправить личное сообщение для bevalorous Посмотреть профиль Найти все сообщения от bevalorous
 
Регистрация: 18.10.2012
Сообщений: 2

Не работает подсветка кода при открытии локально сохраненной страницы
При открытии локально сохраненных страниц учебника не работает подсветка кода.
Firebug при этом показывает следующее сообщение в консоли ошибок:
Код:
ReferenceError: docRoot is not defined
Ошибка возникает только для страниц, которые были скачаны оффлайн-браузером Teleport Pro, т.к. там они сохраняются "как есть". Браузер Firefox сохраняет страницу по-другому, - меняя ее код, - и ошибка не появляется.

Ошибка вызвана тем, что не происходит правильная инициализация одного из классов SyntaxHighlighter - SHStrings. Конкретный участок кода, вызывающий ошибку, находится в файле shCore.js библиотеки SyntaxHighlighter, строки 40 и 41:
Код:
showhtml: 
location.protocol == 'file:' ? docRoot+'/files/local/showhtml.html' : 'http://ru.lookatcode.com/showhtml',
showjs:
location.protocol == 'file:' ? docRoot+'/files/local/showjs.html' : 'http://ru.lookatcode.com/showjs',
Точнее, ошибку вызывает сжатая версия этого файла, которая лежит в папке /files/js, но ведь она, скорее всего, создается у вас автоматически?

Как видите, переменная docRoot нигде не инициализирована, и ошибка возникает только при открытии локального файла (location.protocol == 'file:'). Соответствующие файлы (showhtml.html и showjs.html) также отсутствуют на сервере.
Возможно, для устранения ошибки нужно обновить библиотеку SyntaxHighlighter, в последней версии (3.0.83) этот участок кода уже переработан и выглядит совершенно по-другому. Если я не ошибаюсь, ваш сайт использует SyntaxHighlighter версии 2.1.382, вышедшую около 2 лет назад.
Ответить с цитированием