与此同时,我们有几个页面需要加载这两个库:
<script language="javascript" type="text/javascript"
src="prototype-1.5.1.2.js"></script>
<script language="javascript" type="text/javascript"
src="jquery-1.3.2.js"></script>
<script language="javascript" type="text/javascript">
$j = jQuery.noConflict();
</script>
(请注意,这是旧版的prototype,我们发现了升级时不想修复的问题,无论如何,我们正在逐步淘汰它)
在IE6、IE7、IE8-as-7和FX3中可以正常工作,但在Chrome中加载后,所有jQuery相关的内容都失败了。
打开开发人员JavaScript控制台会显示以下错误消息:
Uncaught Error: NOT_SUPPORTED_ERR: DOM Exception 9 http://.../prototype-1.5.1.2.js (line 1272)
Uncaught TypeError: Object #<an Object> has no method 'ready' http://.../lib.js (line 161)
Uncaught TypeError: Object #<an Object> has no method 'slideUp' http://.../page.aspx (line 173)
... and so on - all the failures are missing jQuery methods
看起来是原型中的冲突导致创建jQuery对象失败。
具体的原型问题似乎是Prototype.BrowserFeatures.XPath为true,而实际上不应该是这样的,因为XPath document.evaluate不被支持。
好了,现在 打开javascript控制台重新加载页面——一切正常! 怎么回事?关闭控制台后,重新加载又失败了。
仅在页面载入时没有打开javascript控制台时才会出现这种错误,这有点像Chrome的一个bug。
有人能解释出错的原因吗?为什么原型中的错误会导致jQuery初始化失败?为什么在打开控制台时页面可以正常工作?
有人知道一个好的解决方法吗?(除了升级到prototype-1.6.0.3.js,这个修复了这个问题,但在其他地方会破坏很多遗留代码)