DWR util.js не работает в Internet Explorer
Я использую DWR в течение нескольких месяцев в моем проекте. я пытался использовать dwr util.js в одном из моих jsp, но странно, когда я включаю util.js(версия 2.0.1), ни один другой javascript не работает в Internet Explorer (работает нормально в Mozilla).
я пытаюсь манипулировать таблицами с помощью util.js, как описано здесь, и что еще более удивительно, я даже не вижу, как ссылка работает хорошо в Internet Explorer.
кто-нибудь сталкивался с этим. любая помощь?
Спасибо!
1 ответ
Вы случайно не используете jQuery, Prototype или другой язык JavaScript, который использует функцию $?
2.x версии DWR Alias dwr.util.byId
как "$
"(что устарело, так как оно не так сильно / полезно, как $
в jQuery, прототип или аналогичный).
Они пытались быть умными, и только Псевдоним, если $
не был предопределен, но логика проверки неверна.
Я предполагаю, что сначала они сделали это:
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