Конфликт при использовании jQuery и prototype, уже разрешенный с помощью jQuery.noConflict(), но

#javascript #prototypejs #jquery

#javascript #прототипы _BOS_ #jquery

Вопрос:

Я использую комбинацию jQuery, jQuery mobile, prototype и photoswipe. Я знаю, что существуют конфликты между jQuery и prototype из-за использования $ ярлыка. Итак, я сделал jQuery.noConflict() . Теперь в моей консоли Firebug он больше не сообщает о каких-либо ошибках. Однако, когда я перехожу к тегу Firebug DOM, я вижу: введите описание изображения здесьи когда я проверяю строку 4725, это var $continue = new Error('"throw $continue" is deprecated, use "return" instead'); . Это была ошибка, которую я получил до того, как использовал jQuery.noConflict() . Должен ли я беспокоиться?

Вот несколько фрагментов кода из моего HTML-файла:

 <script type="text/javascript" src="jsandcss/prototype.js"></script>
<script type="text/javascript" src="jsandcss/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="jsandcss/jquery.mobile-1.0rc2.min.js"></script>
<script type="text/javascript" src="jsandcss/klass.min.js"></script>
<script type="text/javascript" src="jsandcss/code.photoswipe.jquery-2.1.6.min.js"></script>
<link href="jsandcss/jquery.mobile-1.0rc2.min.css" type="text/css" rel="stylesheet" />
<script>
    var $j = jQuery.noConflict();

   $j(document).ready(function(){
    });
</script>
 

Комментарии:

1. Попробуйте сначала включить jQuery плагины, вызвать jQuery.noConflict() , затем включить prototype.

2. @NRohler Спасибо! Я больше не получаю сообщение об ошибке. Но мне интересно, вызывает ли это сообщение об ошибке (см. Скриншот выше) огромную озабоченность. Это потому, что я сначала загрузил библиотеки, а затем вызвал jQuery.noConflict() ?

Ответ №1:

Я не уверен, что хорошо понимаю, как вы увидели эту ошибку, но $continue — это объект ошибки, который до prototype 1.5 (если я помню) вы могли использовать для имитации ключевого слова continue в итерации прототипа (используя методы each, collect , …). Теперь вы можете просто выполнить return в функции итерации. К вашему сведению, $break тот же, это предопределенная ошибка типа $continue, которую вы можете использовать для имитации разрыва в итерации прототипа. Этот все еще сохраняется в активной версии прототипа, но $continue теперь устарел.

Так что да, $continue и $ break являются глобальными (= принадлежат объекту window) и ЯВЛЯЮТСЯ некоторыми ошибками, но еще не выброшены, просто созданы.

Надеюсь, эта информация полезна.