0

私は現在、javascript で悪夢を見ており、誰かが助けてくれることを願っています。私はユーザーフォームモジュールを使用しています。これには、クリックするとテキストフィールドのデフォルト値が消え、フォーカスを失ってnullになると再び表示されるように、独自のjQueryコードも追加しました。

また、同じページにスライドショーを実装しようとしています。IE8 との互換性の問題があるため、これには jQuery を使用できません (Microsoft が嫌いなだけではありませんか!)。代わりに Prototype を使用すると、prototype.js を 2 回 (ページの上部にあるスライドショー用に 1 回、ページの下部に 1 回) 含めていることが原因であると推測できるだけのランダムなエラーが大量に発生します。どういうわけかユーザーフォームによって挿入されたページ。上部のインクルードを削除すると、スライドショーで Prototype lib が見つからないというエラーが発生します。

$トークンの複数のフックの問題を防ぐためにjQuery.NoConflictを使用しようとしていますが、JavaScriptのエラーと競合が混乱してしまいました。

ユーザーフォームがjavascriptインクルード(jQueryとプロトタイプ)をどのように使用/インクルードするかを制御する方法はありますか?

どんな助けやアドバイスも大歓迎です!どうもありがとう

4

1 に答える 1

0
  • jQuery noConflictを正しく使用している場合、Prototype に問題はありません。
  • Prototype を 2 回含めると、問題が発生します。
  • スライドショーで JS を head に含める必要がある場合 (パフォーマンス上の理由から推奨されません)、SilverStripe に JS を head にロードさせることができます。init() 関数に以下を含めます。

    Requirements::set_write_js_to_body(false);
    
  • それでも問題が解決しない場合、Prototype の 2 つの異なるバージョンが必要ですか? もしそうなら、私は問題を修正するか、スライドショープラグインを切り替えようとします - 代替手段がたくさんあるはずです. ページに 3 つの JS ライブラリを含めるのは、やり過ぎのように思えます。読み込み時間について考えてみてください...

于 2011-08-23T12:32:56.273 に答える