7

私はMagentoの初心者です。バナーを表示するためにバナー回転スクリプトを使用しました。header.phtmlすべてのページにバナーを表示する必要があったため、すべてのページにバナーを表示できるように、ファイルにスライダーを実装しました。したがって、header.phtmlでは、スライダーコードは次のようになります。

    <script language="javascript">
         jQuery.noConflict();
        jQuery(document).ready(function(){
          bannerRotator('#bannerRotator', 500, 5000, true);
        });
      </script>
<div id="bannerRotator">
  <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('homepageslider')->toHtml(); ?>
</div>

ここではスライダーはうまく機能していますがconsole tab、Firefoxで見たときにいくつかのエラーが発生しました。これがコンソールタブエラーの画像です。 ここに画像の説明を入力してください すべての問題を解決するために、私はグーグルで検索し、jQueryが競合していることを知りました。だから、私が使用jQuery.noConflictし、すべてをに削除したことを明確にするため$jQuery。しかし、それでも私は同じ問題を抱えています。どんな助けや提案も本当に感謝するでしょう。ありがとう

ライブサイトはここにあります

4

6 に答える 6

2

jquery.noConflictをapp/design / frontend / default/[テーマ名]/template/page/html/head.phtmlファイルに含めます。

jqueryをインクルードした直後、およびgetCssJsHtml()の直前にこれを追加します。

実装をさらに進めて$jvarを呼び出しましたが、それを実行することも、jquery.noConflict()を実装することもできます。

var $ jを使用する場合、すべてのjQuery呼び出しはそのオブジェクトで行われます。

これは私がしました:

!-- adding jQuery -->
<script type="text/javascript"     src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
//<![CDATA[
     var $j = jQuery.noConflict();
//]]>
</script>
<!-- ************* -->

<?php echo $this->getCssJsHtml() ?>

header.phtmlで、次のようにスライダーを呼び出す必要があります。

<script language="javascript">
$j(document).ready(function(){
          bannerRotator('#bannerRotator', 500, 5000, true);
        });
</script>
于 2013-02-05T15:14:51.823 に答える
1

2 つの問題があります。

1)

jQuery を2 回含めています。jquery.js (1.7.1) が含まれており、さらに jquery-1.4.4.min.js も含まれています。これにより、問題が発生しています。

プロジェクトで文字列「jquery-1.4.4.min.js」を検索すると、XML 構成ファイル内に exntry が見つかる可能性があります。これをコメントアウトしてみてください。

おそらく、2 つのモジュールが両方とも Magento XML 構成を介して jquery を追加しています。モジュールの XML 構成ファイル内のこれらのエントリの 1 つを削除すると、問題は解消されます。jquery-1.4.4.min.js を削除することをお勧めします。これは、さらに多くの問題を引き起こす他のほとんどの jquery プラグインの後に含まれているためです。

2)

jQuery.noConflict() は、jquery が使用された後に呼び出されます。上で提案したように、これを回避する最善の方法は、jquery.js ファイルを開き、これをファイルの最後に追加することです: ;jQuery.noConflict();

于 2013-02-11T13:44:59.267 に答える
0

私の経験で対立を回避する最良の方法は次のとおりです。

  • jQueryの1つのバージョンを削除します-2つがインストールされています。通常、最新のものはすべてのプラグインと互換性があるはずです。
  • jQueryファイルを編集して、次のように作成します。jquery-1.7.1-custom.js
    • jQuery.noConflict();ファイルの最後に追加します。
  • あなたがしていることは正しいです-$記号を使用せず、すべてにjQueryプレフィックスを使用してください。
  • あなたの場合で最も重要です。ファイルが次の順序でロードされていることを確認してください。
    • プロトタイプ
    • jQuery(カスタム)
    • jQueryプラグイン
于 2013-02-13T01:01:14.773 に答える
0

jQuery.noConflict();プロトタイプ.jsスクリプトが含まれる前に呼び出す必要があるため、jquery.jsスクリプトファイルの最後に追加する必要があります。

于 2013-02-05T13:17:27.100 に答える
0

主な問題は、プロトタイプの前にjqueryを含めていることです(ページのソースを表示)

 <script type="text/javascript" src="..../js/jquery/jquery.js"></script>
 <script type="text/javascript" src="..../js/prototype/prototype.js"></script>

に変更する必要があります

 <script type="text/javascript" src=".../js/prototype/prototype.js"></script>
 <script type="text/javascript" src=".../js/jquery/jquery.js"></script>
 //best to add  jQuery noConflict right after

このオープンを修正するには

/design/frontend/default/[テーマ]/layout/page.xml

または(上記でjqueryが見つからない場合)

/app/design/frontend/default/[テーマ]/template/page/html/head.phtml

page.xml は次のようになります。

<default translate="label" module="page">
    ......
        <block type="page/html_head" name="head" as="head">
            <action method="addJs"><script>prototype/prototype.js</script></action>
            <action method="addJs"><script>lib/ccard.js</script></action>
            <action method="addJs"><script>prototype/validation.js</script></action>
            <action method="addJs"><script>scriptaculous/builder.js</script></action>
            ......
            <action method="addJs"><script>mage/translate.js</script></action>
            <action method="addJs"><script>mage/cookies.js</script></action>


            <action method="addItem"><type>skin_js</type><name>js/jquery-1.7.2.min.js</name></action>
            <action method="addItem"><type>skin_js</type><name>js/jquery.noconflict.js</name></action>
            <action method="addItem"><type>skin_js</type><name>js/jqforms/jquery.jqtransform.js</name></action>
           <!- all other jquery plugin below -->
   .....

ファイル呼び出し jquery.noconflict.js を作成し、追加します

 var $j = jQuery.noConflict(); // you could also add this  to the end of jquery-1.7.2.min.js

カスタムjqueryコードでは、もう使用できません(prototypeJのみで使用)またはいずれか$...を使用する必要があります$j...jQuery...

次に、削除します

  <script src="http://modulesoft.biz:/projects/magento/extream/skin/frontend/base/default/js/jquery-1.4.4.min.js"></script>
于 2013-02-14T15:09:18.333 に答える
0

この Magento モジュールを使用できます: https://github.com/sotastudio/Mage.Ext.Jquery

JavaScript の組み込みを再編成し、jQuery を最初の位置に直接設定するだけです。さらに、このスニペット内で jQuery を簡単に実行できます。

(function($) {
  $(function() {
    //console.log($('body'));
  });
})(jQuery);
于 2013-02-11T13:30:27.523 に答える