$()这个创意确实是从Protoype偷来的,但是Protoype是不是原创,那我就无从得知了。
util.js中$()的实现如下:
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->var $;
if (!$) {
$ = dwr.util.byId;
}
if (document.getElementById) {
dwr.util.byId = function() {
var elements = new Array();
for (var i = 0; i < arguments.length; i++) {
var element = arguments[i];
if (typeof element == 'string') {
element = document.getElementById(element);
}
if (arguments.length == 1) {
return element;
}
elements.push(element);
}
return elements;
};
}
else if (document.all) {
dwr.util.byId = function() {
var elements = new Array();
for (var i = 0; i < arguments.length; i++) {
var element = arguments[i];
if (typeof element == 'string') {
element = document.all[element];
}
if (arguments.length == 1) {
return element;
}
elements.push(element);
}
return elements;
};
}
同样的代码为什么要写两遍呢?就算Mozilla浏览器不支持document.all,难道IE下就不能使用document.getElementById吗?再看:Protoype中的实现:
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->function $(element) {
if (arguments.length > 1) {
for (var i = 0, elements = [], length = arguments.length; i < length; i++)
elements.push($(arguments[i]));
return elements;
}
if (typeof element == 'string')
element = document.getElementById(element);
return Element.extend(element);
}
两下相比,好像DWR并不比老师高招啊。而DWR文档上的说法是这样可以让更多的浏览器支持!!!document.getElementById()不是ECMA公布的标准吗?
有点晕,刚才GOOGLE了一下,却发现了这篇文章http://www.cnblogs.com/xiang/archive/2005/10/08/250273.html,一试之下果然如此,看来真的要郑重的对待document.getElementById()和document.all了。
这篇文章大致是说:在IE中,如果有一个HTML标签的name属性和id属性的值相同,那么document.getElementById抓到的是那个name,而不是id。
还有就是:
document.getElementById IE5.0以下的不支持!
document.all IE4.0以上的支持!
分享到:
相关推荐
- **编写JSP页面**:在JSP页面中使用JavaScript调用DWR服务。 #### 三、DWR配置详解 ##### 2.1 web.xml配置 - **主要配置**:包括DWR的servlet映射、初始化参数等。 - **安全参数**:设置DWR的安全级别,防止非法...
DWR提供了丰富的JavaScript API,与jQuery、Prototype等库良好集成,方便在现有项目中使用。 8. **DWR的安全性和最佳实践**: - 应该限制暴露给客户端的方法,避免暴露敏感信息。 - 使用最新版本的DWR,以获取...
1. **DWR的基本概念** DWR的核心理念是实现在浏览器和服务器之间进行实时、异步的数据交换,这使得动态Web应用能够实现类似桌面应用的交互体验。它通过JavaScript API暴露Java方法,使得前端可以直接调用后端的业务...
DWR(Direct Web Remoting)是一种Java技术,用于在Web应用程序中实现JavaScript和服务器端Java代码之间的直接异步通信。这个“DWR入门程序---计算输入的两个数之和.rar”压缩包文件很可能是为了演示如何使用DWR来...
dwr包.rar dwr.jar engine.js util.js dwr-noncla.jar readme.txt JAR File: dwr.jar (1.08Mb) To DWR enable your web-app WAR File: dwr.war (4.62Mb) Demos/Examples of what DWR can do Sources: dwr-...
1. **引入依赖**:首先,你需要在项目中引入DWR和Spring的相关依赖。通常,这可以通过Maven或Gradle的依赖管理来完成。确保引入DWR的核心库和Spring的相应模块,如spring-context支持。 2. **配置DWR**:在DWR的...
1. **无需复制util.js和engine.js**:这两个文件不需要被复制到项目的JS目录中,它们应通过DWR servlet动态提供。 2. **路径匹配**:在引入JavaScript文件时,确保路径与`web.xml`中配置的路径相匹配,如`/dwr/*`。 ...
- `dwr/interface/testClass.js`: 自动生成的JavaScript文件,包含调用Java方法所需的代理函数。 - `dwr/engine.js`: DWR的核心库,提供底层通信支持。 - `dwr/util.js`: 提供一些实用工具函数。 #### 三、DWR调用...
1. **DWR.jar**: 这是DWR的核心库文件,包含了运行DWR所需的所有类和资源。当你在项目中引入dwr.jar,你可以使用DWR提供的API来实现Ajax功能。这个jar文件包括了各种Servlet、Filter、JavaScript接口和辅助类,...
Direct Web Remoting (DWR) 是一个开源Java库,它允许在Web应用程序中轻松地进行JavaScript和服务器端Java代码之间的交互。DWR使得AJAX(Asynchronous JavaScript and XML)开发更为简便,允许开发者在不刷新整个...
DWR是一个Java库,允许在浏览器和服务器之间进行实时、双向通信,使得JavaScript可以直接调用Java方法,实现了Web应用中的Ajax功能。而Spring是广泛使用的Java企业级应用开发框架,提供了全面的基础设施支持,包括...
在这个页面中,我们引入了DWR生成的JavaScript接口`HelloWorld.js`和核心引擎`engine.js`。`callServer`函数会在用户点击按钮时调用服务器的`sayHello`方法,并将结果显示在页面上。 ### 七、部署与测试 1. 将项目...
dwr-1.1.1-util.js
DWR 是一个开源Java库,它允许JavaScript在Web浏览器中与服务器端的Java对象进行交互,实现Ajax功能。描述中的内容同样指向这个版本号,暗示了这是一个软件开发资源包。 标签 "dwr-1.1.3-src.zip" 重复了标题信息,...
1. **反向AJAX (Reverse AJAX)**:DWR通过创建JavaScript对象来映射服务器端的Java类和方法,使得JavaScript可以直接调用这些方法,实现了浏览器到服务器的异步通信。 2. **自动JSON支持**:DWR能够自动将Java对象...
1. **客户端请求**:用户在浏览器中运行JavaScript代码,调用DWR提供的接口,指定要执行的服务器端方法和参数。 2. **DWR Engine**:DWR引擎接收这些请求,根据配置找到对应的Java方法。 3. **安全检查**:DWR执行...
这个“dwr-任何java类-测试”主题着重于如何利用DWR来调用Java类的方法并在前端JavaScript中显示结果。 首先,我们需要理解DWR的工作原理。DWR通过创建一个JavaScript接口,该接口映射到服务器上的Java类和方法。...
#### 五、DWR中的JavaScript使用技巧 ##### 5.1 简单的回调函数 - **使用方法**: - 定义一个简单的JavaScript函数来处理服务器端返回的结果。 - 示例代码: ```javascript function handleResponse(data) { //...