Ошибка "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

Другие вопросы по тегам