万が一、jQuery、Prototype、または$関数を使用する別のJavaScript言語も使用していますか?
DWRエイリアスの2.xバージョンはdwr.util.byId
" "( jQuery、Prototypeなど$
のinほど強力/有用ではないため、非推奨です)。$
彼らは巧妙にしようとし、$
事前定義されていない場合にのみエイリアスを実行しますが、チェックロジックに欠陥があります。
私は最初彼らがこれをしたと思います:
if(!$){
//... alias it
}
しかし、誰かが$
定義されていない場合、これはエラーをスローすることに気づいたので、次のようにコミットされました。
var $;
if(!$){
//... alias it
}
これはFirefoxで正常に機能します。これは、の値を宣言しておらず、$
存在しているだけだからです。
ただし、Internet Explorerでは、varステートメントは(nothing)として再定義$
されます...したがって、if()テストの実行時には存在しません...
3.x(RC)コードをチェックして、彼らはより安定したもののためにこのテストを捨てました:
if(window['$'] == null){
//... alias it
}
これはFirefoxとInternetExplorer(および他のすべてのブラウザ)で正常に機能します...util.js
ファイルを更新するだけですdwr.jar
。
また、ライブラリを含める順序によって、どのライブラリが$
関数の所有権を取得するかが決まります。
たとえば、jQueryにそれを持たせるには、次のようにします。
<script src="jQuery"...></script>
<script src="dwr/util.js"...></script>
DWRにそれを持たせるには、jQueryにnoConflictフラグを設定してください
<script src="jQuery"...></script>
<script>jQuery.noConflict();</script>
<script src="dwr/util.js"...></script>
ドキュメント:jQuery.noConflict