2

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

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

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

谢谢!

4

1 回答 1

3

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

DWR Alias 的 2.x 版本dwr.util.byId为“ $”(已弃用,因为它不如$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.

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

例如,要让 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

于 2010-01-14T19:22:45.367 回答