2012-03-06 1 views
0

私はJoomla上に構築されたサイトを持っています。 Joomlaではmootoolsが使用されていますが、ほとんどの拡張ではjqueryが使用されます。 Joomlaで使用するテンプレートがあり、登録ページに問題があるようです。テンプレートを変更しても、すべて正常に動作します。jqueryの競合をデバッグする

私が使用している私のyoothemeテンプレートのいくつかの検索から推測するとjqueryの競合だと思います。私はテンプレート作成者から何も得ていない。

ファイヤーバグには何も表示されません。ここで問題をどのようにデバッグすることができますか?

+1

を変更することができますか?何が望ましい行動で、代わりに何が起こっているのですか? –

+0

登録中に検証が行われていません。たとえば、訪問者は、利用規約を選択せず​​に入力することができます。正しい行動は、登録を禁止することです。または、別の例では、パスワードの不一致、電子メールの不一致、パスワードの強度など – Tom

+1

は、console.log()の多くの時間のように聞こえます。 –

答えて

1

これは名前空間の問題です。 mootoolsとjquery(元のjQuery()は別として)は、セレクタのために同じ$()という名前の関数を使用しています。同じサイトで両方を使用すると、一方は他方と競合します。しかし、mootoolsはJoomlaのネイティブで、jQueryは「ビジター」フレームワークなので、.noConflict()関数を使用してjQueryのネームスペースを変更できます。

//future uses of jQuery will use "j" instead of "$" 
//i think you can still use the original "jQuery()" also 
var j = jQuery.noConflict(); 

//instead of: 
$("selector"); 

//now you use: 
j("selector"); 

//or 
jQuery("selector"); 

はあなたのjQueryをロードした直後に.noConflict()を宣言したが、JoomlaののMooToolsのスクリプトの前にこれらの両方をロードします。また、プラグインに入っているjQueryスクリプトがあれば、変更した名前空間に

+0

応答をありがとう。実際、私はこれをすべてのカスタムコードに使用します。しかし、この場合、私はこのテンプレートからコードをデバッグしていません。彼らは別々のnoconflict.jsファイルを読み込みますが、これがこれをカバーするかどうかはわかりません。だから私が探しているのは、これをさらにどのようにデバッグすることができるかというヒントです。 – Tom

+0

YooThemeはかなり頑丈なテンプレートを作成します。私は彼らがこのように失敗したテンプレートを構築した場合、驚くだろう。おそらく競合の原因となるアドオン(たぶんモジュール)がインストールされている可能性があります。おそらくこれを解決する可能性があります。たとえば、衝突のあるモジュールが代替テンプレートに存在しない位置に公開され、モジュールが出力されず、衝突することもありません。リンクは、最も迅速なヘルプを可能にします。 –

+0

その理由は、私はJoomlaを使用して停止しました。重いCMSとストラップオン機能を使用してフランケンシュタインのウェブサイトを作成することは、ユーザーにとって非常に面倒であり、開発者にとってはずっと多くのことです。拡張性に対応するためには、Joomlaは外部フレームワークを使用すべきではありません。 – Joseph