Я действительно люблю SyntaxHighter - получается шикарный код. К сожалению, я лаял на голени против ужасающей ошибки JS в IE7 и IE8, что помешает мне использовать этот отличный плагин в целом.
Вот тестовый пример. Я в том числе
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
в моем заголовке, чтобы IE7 и IE8 могли распознавать элементы HTML5.
В теле моей тестовой страницы я только что получил несколько элементов навигации:
<nav id="top-nav" class="f16 clearfix">
<ul id="nav-menu">
<li><a href="index.htm">Home</a></li>
<li><a href="branding.htm">Branding</a>
<ul class="nav-submenu">
<li><a href="logos1">Logos 1</a></li>
<li><a href="logos2">Logos 2</a></li>
<li><a href="logos3">Logos 3</a></li>
</ul>
</li>
</ul>
</nav>
Нет ничего кроме этих включений для JQuery и SyntaxHighlighter и этого небольшого скрипта, который инициализирует SyntaxHighlighter и пытается добавить прослушиватель событий в навигационное меню.
<script src="extra/syntax-highlighter/shCore.js"></script>
<script src="extra/syntax-highlighter/shBrushJScript.js"></script>
<script src="extra/syntax-highlighter/shBrushXml.js"></script>
<script>
SyntaxHighlighter.all();
$(document).ready(function(){
$('#nav-menu').on('mouseenter', function () {
$(this).children('.nav-submenu').fadeIn('fast');
})
})
</script>
Когда я просматриваю эту страницу в IE7 и IE8, я получаю сообщение об ошибке «SCRIPT5007: невозможно получить значение свойства« slice »: объект имеет значение null или undefined», и мой jQuery не работает.
Из прочтения я понимаю, что это может иметь отношение к XRegExp, который использует SyntaxHighlighter. Согласно в этом билете об ошибках jQuery в XRegExp произошла ошибка, которая была исправлена в XRegExp 1.5.1. К сожалению, это исправление, похоже, не нашло свое отражение в SyntaxHighlighter. Обсуждалась аналогичная ошибка на странице Bitbucket SyntaxHighlighter . Я попробовал модифицированные файлы XregExp.js и shCore.js, созданные одним парнем, но это не решило мою проблему.
Кто-нибудь еще сталкивался с такими вещами? В противном случае мне придется использовать какой-нибудь другой дерьмовый подсветщик синтаксиса!