DWR util.js не работает в Internet Explorer - PullRequest
2 голосов
/ 16 декабря 2009

Я использую DWR в течение нескольких месяцев в моем проекте. я пытался использовать dwr util.js в одном из моих jsp, но странно, когда я включаю util.js (версия 2.0.1), ни один другой javascript не работает в Internet Explorer (работает нормально в Mozilla).

Я пытаюсь манипулировать таблицами с помощью util.js, как описано здесь , и что еще более удивительно, я даже не вижу, что ссылка работает хорошо в Internet Explorer.

кто-нибудь сталкивался с этим. любая помощь?

спасибо!

1 Ответ

3 голосов
/ 14 января 2010

Вы случайно не используете jQuery, Prototype или другой язык JavaScript, который использует функцию $?

Версии 2.x DWR Alias ​​dwr.util.byId как "$" (что устарело, поскольку не столь мощно / полезно, как $ в jQuery, Prototype или аналогичных).

Они пытались быть умными, и делали Псевдоним, только если $ не было предопределено, но логика проверки ошибочна.

Сначала я полагаю, что они сделали это:

if(!$){
  //... alias it
}

но затем кто-то понял, что, если $ не определен, это выдаст ошибку, поэтому оно было зафиксировано как:

var $;
if(!$){
  //... alias it
}

, который отлично работает в Firefox, поскольку он не объявляет значение для $, просто он существует.

Но в Internet Explorer оператор var переопределяет $ как (ничего) ... таким образом, он не существует, когда выполняется тест if () ...

Проверяя код 3.x (RC), они отказались от этого теста для более стабильного:

if(window['$'] == null){
  //... alias it
}

Что отлично работает в Firefox и Internet Explorer (и AFAIK во всех других браузерах) ... просто обновите файл util.js в вашем dwr.jar.

Следует также отметить: порядок, в котором вы включаете библиотеки, будет определять, какая из них станет владельцем функции $.

например. чтобы позволить jQuery, сделайте:

<script src="jQuery"...></script>
<script src="dwr/util.js"...></script>

, чтобы позволить DWR иметь его, обязательно установите флаг noConflict для jQuery

<script src="jQuery"...></script>
<script>jQuery.noConflict();</script>
<script src="dwr/util.js"...></script>

Документы: jQuery.noConflict

...