2

プロジェクトで数か月間 DWR を使用しています。jsp の 1 つで dwr の util.js を使用しようとしましたが、不思議なことに、util.js(バージョン 2.0.1) を含めると、Internet Explorer で他の JavaScript が動作しません (mozilla で正常に動作します)。

ここで説明されているように、util.js を使用してテーブルを操作しようとしていますが、さらに驚くべきことに、Internet Explorer でリンクがうまく機能していることさえわかりません。

誰かがこれに出くわしましたか。助けはありますか?

ありがとう!

4

1 に答える 1

3

万が一、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

于 2010-01-14T19:22:45.367 に答える