2009-12-16 6 views
2

J'ai utilisé DWR pour quelques mois dans mon projet. J'ai essayé d'utiliser util.js de dwr dans un de mes jsp mais étrangement quand j'inclus util.js (version 2.0.1) aucun autre javascript ne fonctionne dans Internet Explorer (fonctionnant bien dans mozilla).DWR util.js ne fonctionne pas dans Internet Explorer

J'essaye de manipuler des tables avec util.js comme décrit here et plus étonnamment je ne peux même pas voir le lien fonctionnant bien dans Internet Explorer.

Quelqu'un a-t-il trouvé cela? de l'aide?

merci!

Répondre

3

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

+0

Thank you! explication géniale. –

Questions connexes