我真的很喜欢这段代码-它是最漂亮的代码。不幸的是,我对IE7和IE8中的一个骇人听闻的JS错误嗤之以鼻,这将阻止我使用这个优秀的插件。
这是一个测试用例。我包括

<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并尝试将事件侦听器添加到nav菜单的小脚本。
<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”的值:对象为空或未定义”,jQuery无法工作。
通过阅读,我了解到这可能与SyntaxHighlighter使用的XRegExp有关。XRegExp中存在一定的误差,并在XRegExp 1.5.1中得到了修正。不幸的是,这个修复程序似乎还没有找到它的方法来SyntaxHighlighter。在SyntaxHighlighter的SyntaxHighter上有一个类似的错误的讨论。我尝试了一个人生成的修改过的XregExp.js和shCore.js文件,但没有解决我的问题。
还有人遇到过这种事吗?否则我将不得不使用一些其他糟糕的语法打火机!

最佳答案

我在IE7/8中遇到了同样的问题
最后,我从GitHub(https://github.com/alexgorbatchev/SyntaxHighlighter)中获取了插件的最新版本,这比BitBucket上的存储库更为更新,从而修复了这些问题。

07-26 05:19