Par hasard utilisez-vous également jQuery, Prototype ou un autre langage JavaScript utilisant la fonction $?
Les versions 2.x de DWR Alias dwr.util.byId
comme "$
" (qui est obsolète, car il est pas aussi puissant/utile comme $
dans jQuery, Prototype ou similaire).
Ils ont essayé d'être intelligents, et ne font que l'alias, si $
n'était pas prédéfini, mais la logique de vérification est erronée.
Je présume que d'abord ils ont fait cela:
if(!$){
//... alias it
}
mais quelqu'un a réalisé que si $
n'a pas été défini, ce jetterait une erreur, il a été commited comme:
var $;
if(!$){
//... alias it
}
ce qui fonctionne bien dans Firefox car cela ne déclare pas de valeur pour $
, juste qu'il existe.
Mais dans Internet Explorer, l'instruction var re-définit comme $
(rien) ... donc il n'existe pas lorsque le test if() est exécuté ...
Vérification 3.x (RC) code, ils abandonné ce test pour le plus stable:
if(window['$'] == null){
//... alias it
}
ce qui fonctionne bien dans Firefox et Internet Explorer (& afaik tous les autres navigateurs) ... simplement mettre à jour le fichier util.js
dans votre dwr.jar
.
Je devrais également noter: l'ordre dans lequel vous incluez les bibliothèques déterminera lequel appartient à la fonction $
.
par exemple. de laisser jQuery ont, faire:
<script src="jQuery"...></script>
<script src="dwr/util.js"...></script>
laisser DWR ont, assurez-vous de mettre le drapeau noConflict pour jQuery
<script src="jQuery"...></script>
<script>jQuery.noConflict();</script>
<script src="dwr/util.js"...></script>
Docs: jQuery.noConflict
Thank you! explication géniale. –