我真的很喜歡SyntaxHighter - 它變成了最正面的代碼。不幸的是,我已經在IE7和IE8中咆哮了一陣令人震驚的JS錯誤,這將阻止我完全使用這個優秀的插件。SyntaxHighlighter和jQuery的IE錯誤 - 「無法獲得屬性'切片'的值:對象爲空或未定義」
這是一個測試用例。我包括
<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:無法獲得屬性‘片’的值:對象爲null或undefined」和我的jQuery無法工作。
從閱讀我理解這可能與XRegExp,SyntaxHighlighter使用的。根據this jQuery bug ticket,在XRegExp 1.5.1中修復了XRegExp中的錯誤。不幸的是,這個修復似乎沒有找到方法來處理SyntaxHighlighter。有關於SyntaxHighlighter的Bitbucket page上的類似錯誤的討論。我嘗試了一個人製作的修改過的XregExp.js和shCore.js文件,但它並沒有解決我的問題。
有沒有其他人碰到過這種東西?否則,我將不得不使用一些其他蹩腳的語法熒光筆!
非常感謝約翰,這對我也有詭計!結果!我不確定構建是如何工作的,所以我將XRegExp.js與其他SyntaxHighlighter JS文件一起明確包含在內。 – 2012-04-01 18:01:57