JavaScript не загружается. Перепробовал все что могу придумать - PullRequest
0 голосов
/ 26 января 2010

Swimwire.com больше не загружает JavaScript должным образом, так как я установил обновление для его модуля Social, JomSocial. Я уверен, что это как-то связано с JomSocial, поскольку на главной странице JavaScript не работает должным образом (в верхней части есть синяя полоса, которая должна нажиматься и содержать слова «Открыть панель управления», но она не загружается). Принимая во внимание, что если я зайду на страницу, не отображающую контент JomSocial, JavaScript с удовольствием загрузится.

Мне вчера помогли, но, к сожалению, я все еще застрял. Я новичок в JavaScript, и Safari выдает мне ошибку

TypeError: Результат выражения '$' [undefined] не является функцией. /modules/mod_rokslideshow/tmpl/slideshow.js:73TypeError: Результат выражения '$' [undefined] это не функция. 2 / СМИ / система / JS / mootools.js: 54TypeError: Ошибка типа

Я совсем не уверен, как это интерпретировать. Я уверен, что что-то в JomSocial вызывает конфликт, но я не знаю, как на самом деле решить эту проблему.

Jack

Ответы [ 3 ]

2 голосов
/ 26 января 2010

Есть несколько библиотек, которые определяют $; Я знаю, что jQuery и Prototype делают это, не уверен насчет MooTools (что я вижу в вашем сообщении об ошибке). Итак, основываясь на этом сообщении, я могу только догадываться, что вы, так или иначе, загрузили две библиотеки, которые обе используют $.

Решением jQuery для этого является использование noConflict: http://docs.jquery.com/Core/jQuery.noConflict. Не зная обе стороны конфликта и не имея доступа к сайту самостоятельно, это лучшее, что я могу сделать.


Редактировать: Пробовали ли вы какие-либо решения, предлагаемые MooTools? http://mootools.net/blog/2009/06/22/the-dollar-safe-mode/

1 голос
/ 26 января 2010

Ваш jQuery.noConflict(), скорее всего, появляется после загрузки некоторых других сценариев и попытки использования $.

Другое дело ... jQuery.noConflict() может не работать, если оно включено до другой библиотеки, как в этом случае.

0 голосов
/ 26 января 2010

Вы должны убедиться, что даже если у вас есть jQuery в режиме без конфликтов, у вас MooTools загружает сначала . Если вы загрузите jQuery, переведите его в режим без конфликтов, а затем загрузите MooTools, это не удастся. Я написал некоторую документацию по этому вопросу в своей книге: http://www.packtpub.com/files/learning-joomla-1-5-extension-development-sample-chapter-8-using-javascript-effects.pdf

Если вы убедитесь, что следующий вызов сделан до того, как jQuery будет добавлен в документ, он должен загрузить MooTools перед jQuery:

JHTML::_('behavior.mootools');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...