DWR util.js无法在Internet Explorer中运行

时间:2009-12-16 16:37:40

标签: internet-explorer dwr

我在项目中使用DWR几个月。我尝试在我的一个jsp中使用dwr的util.js,但奇怪的是当我包含util.js(版本2.0.1)时,没有其他javascript在Internet Explorer中工作(在mozilla中正常工作)。

我正在尝试使用所述here描述的util.js操作表格,更令人惊讶的是,我甚至看不到链接在Internet Explorer中运行良好。

有没有人遇到这个。有什么帮助吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

您是否还使用jQuery,Prototype或其他使用$函数的JavaScript语言?

DWR Alias dwr.util.byId的2.x版本为“$”(不推荐使用,因为它不如jQuery,Prototype中的$强大/有用相似)。

他们试图变得聪明,只做了别名,如果$没有预先定义,但检查逻辑是有缺陷的。

我首先假设他们这样做了:

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

然后有人意识到如果没有定义$,这会引发错误,所以它被提交为:

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

在Firefox中运行正常,因为它没有声明$的值,只是它存在。

但在Internet Explorer中,var语句将$重新定义为(nothing)...因此在运行if()测试时它不存在...

检查3.x(RC)代码,他们放弃了这个测试以获得更稳定的代码:

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

在Firefox和Internet Explorer(& AFAIK所有其他浏览器)中工作正常...只需更新util.js中的dwr.jar文件。

我还应该注意:您包含库的顺序将决定哪一个获得$函数的所有权。

e.g。让jQuery拥有它,做:

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

让DWR拥有它,请务必为jQuery设置noConflict标志

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

文档:jQuery.noConflict