我在 FF3.0 中加载索引页时收到以下错误。抱歉,我无法将脚本粘贴到此处,因为它有 2030 行代码。
element.dispatchEvent 不是一个函数
在扩展时它给了我以下内容,
fire()()prototype.js?1(第 3972 行)
_methodized()()prototype.js?1(第 246 行)
fireContentLoadedEvent()prototype.js?1(第 4006 行)
[中断此错误] element.dispatchEvent(event);
element.dispatchEvent(event);
位于prototype.js的第3972行。我在我的索引页面中包含了 prototype.js 以及 10 个其他 js 文件。
有人遇到过这种错误吗?请有人解释一下为什么会出现这个错误。
你是否在同一页面上使用jquery和prototype?
如果是这样,请使用jquery noConflict模式,否则你将覆盖原型$函数。
无冲突模式可通过执行以下操作来激活:
<script src="jquery.js"></script>
<script>jQuery.noConflict();</script>
注意:通过这样做,美元符号变量不再代表 jQuery 对象。为了避免重写所有 jQuery 代码,您可以使用这个小技巧为 jQuery 创建美元符号范围:
jQuery(function ($) {
// The dollar sign will equal jQuery in this scope
});
// Out here, the dollar sign still equals Prototype
添加完所有 Jquery 脚本标签后
<script>jQuery.noConflict();</script>
避免Prototype和Jquery之间的冲突。
更改以下行
$(document).ready(function() {
至
jQuery.noConflict();
jQuery(document).ready(function($) {
你必须添加
<script>jQuery.noConflict();</script>
之后
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
这听起来很愚蠢,但是由于意外或分散,您在代码中的原型下方再次添加了 jquery.js!例如...Ctrl+V...
<script ... src="jquery.js"></script>
<script ... > jQuery.noConflict(); </script>
<script ... src="...prototype.js"></script> /* Fine up to here */
...
<!-- ( code ....) -->
...
...
<script ... src="jquery.js"></script>//<-- Devil: already added
我知道已经有一段时间了,但这可能对某人有帮助,对我来说问题是我导入了 jquery 两次
通过在 noconflict.js 之后调用 jquery 库来检查这一点,或者在 noconflict.js 之后调用多次 jquery 库