开发者

DWR util.js not working in internet explorer

I have been using DWR for couple of months in my project. i tried using dwr's util.js in one of my jsp but strangely when i include util.js(version开发者_高级运维 2.0.1) none other javascript is working in internet explorer(working fine in mozilla) .

i am trying to manipulate tables with util.js as described here and more surprisingly i can't even see the link functioning well in Internet Explorer.

has anyone come across this. any help?

thanks!


By any chance are you also using jQuery, Prototype, or another JavaScript language that uses the $ function?

The 2.x versions of DWR Alias dwr.util.byId as "$" (which is deprecated, since it isn't as powerful/helpful as the $ in jQuery, Prototype or similar).

They tried to be clever, and only do the Alias, if $ wasn't pre-defined, but the check logic is flawed.

I presume at first they did this:

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

but then someone realized that if $ wasn't defined, this would throw an error, so it was commited as:

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

which works fine in Firefox as this doesn't declare a value for $, just that it exists.

But in Internet Explorer, the var statement re-defines $ as (nothing)... thus it doesn't exist when the if() test is run...

Checking the 3.x (RC) code, they ditched this test for the more stable:

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

Which works fine in Firefox AND Internet Explorer (& AFAIK all other browsers)... just update the util.js file in your dwr.jar.

I should also note: the order in which you include libraries will determine which one gets ownership of the $ function.

e.g. to let jQuery have it, do:

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

to let DWR have it, be sure to set the noConflict flag for jQuery

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

Docs: jQuery.noConflict

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜