Ошибка "element.dispatchEvent не является функцией" в Firebug FF3.0
Я получаю следующую ошибку при загрузке моей страницы индекса в FF3.0. Извините, я не могу вставить скрипт здесь, так как он содержит 2030 строк кода.
element.dispatchEvent не является функцией
На расширение это дает мне ниже вещей,
fire () () prototype.js? 1 (строка 3972)
_methodized () () prototype.js? 1 (строка 246)
fireContentLoadedEvent () prototype.js? 1 (строка 4006)
[Перерыв на этой ошибке] element.dispatchEvent(событие);
element.dispatchEvent(event);
находится в строке 3972 файла prototype.js. Я включаю prototype.js вместе с 10-ю другими js-файлами в мою страницу индекса.
Кто-нибудь сталкивался с такой ошибкой? Пожалуйста, кто-нибудь объяснит мне, почему эта ошибка появляется.
7 ответов
Вы случайно используете jquery и прототип на одной странице?
Если это так, используйте режим jquery noConflict, в противном случае вы перезаписываете прототипы $ function.
Режим 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.
Проверьте это, вызвав библиотеку jquery после noconflict.js или что это вызовет более одного раза библиотеку jquery после noconflict.js