`
- 浏览:
118370 次
- 性别:
- 来自:
广东.佛山.南海
-
js 代码
-
-
-
-
- var $F = Form.Element.getValue;
-
-
-
-
-
-
-
-
-
-
-
-
- Abstract.TimedObserver = function() {}
-
-
-
- Abstract.TimedObserver.prototype = {
- initialize: function(element, frequency, callback) {
- this.frequency = frequency;
- this.element = $(element);
- this.callback = callback;
-
- this.lastValue = this.getValue();
- this.registerCallback();
- },
- registerCallback: function() {
- setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
- },
- onTimerEvent: function() {
- var value = this.getValue();
- if (this.lastValue != value) {
- this.callback(this.element, value);
- this.lastValue = value;
- }
- }
- }
-
-
-
- Form.Element.Observer = Class.create();
- Form.Element.Observer.prototype = (new Abstract.TimedObserver()).extend({
- getValue: function() {
- return Form.Element.getValue(this.element);
- }
- });
-
-
-
- Form.Observer = Class.create();
- Form.Observer.prototype = (new Abstract.TimedObserver()).extend({
- getValue: function() {
- return Form.serialize(this.element);
- }
- });
-
-
-
-
-
- Abstract.EventObserver = function() {}
- Abstract.EventObserver.prototype = {
- initialize: function(element, callback) {
- this.element = $(element);
- this.callback = callback;
-
- this.lastValue = this.getValue();
- if (this.element.tagName.toLowerCase() == 'form')
- this.registerFormCallbacks();
- else
- this.registerCallback(this.element);
- },
- onElementEvent: function() {
- var value = this.getValue();
- if (this.lastValue != value) {
- this.callback(this.element, value);
- this.lastValue = value;
- }
- },
- registerFormCallbacks: function() {
- var elements = Form.getElements(this.element);
- for (var i = 0; i < elements.length; i++)
- this.registerCallback(elements);
- },
- registerCallback: function(element) {
- if (element.type) {
- switch (element.type.toLowerCase()) {
-
-
-
- case 'checkbox':
- case 'radio':
- element.target = this;
- element.prev_onclick = element.onclick || Prototype.emptyFunction;
-
-
-
- element.onclick = function() {
- this.prev_onclick();
- this.target.onElementEvent();
- }
- break;
-
-
-
- case 'password':
- case 'text':
- case 'textarea':
- case 'select-one':
- case 'select-multiple':
- element.target = this;
- element.prev_onchange = element.onchange || Prototype.emptyFunction;
- element.onchange = function() {
- this.prev_onchange();
- this.target.onElementEvent();
- }
- break;
- }
- }
- }
- }
-
-
-
- Form.Element.EventObserver = Class.create();
- Form.Element.EventObserver.prototype = (new Abstract.EventObserver()).extend({
- getValue: function() {
- return Form.Element.getValue(this.element);
- }
- });
-
-
-
- Form.EventObserver = Class.create();
- Form.EventObserver.prototype = (new Abstract.EventObserver()).extend({
- getValue: function() {
- return Form.serialize(this.element);
- }
- });
-
-
-
- if (!window.Event) {
- var Event = new Object();
- }
- Object.extend(Event, {
- KEY_BACKSPACE: 8,
- KEY_TAB: 9,
- KEY_RETURN: 13,
- KEY_ESC: 27,
- KEY_LEFT: 37,
- KEY_UP: 38,
- KEY_RIGHT: 39,
- KEY_DOWN: 40,
- KEY_DELETE: 46,
- element: function(event) {
- return event.target || event.srcElement;
- },
- isLeftClick: function(event) {
- return (((event.which) && (event.which == 1)) ||
- ((event.button) && (event.button == 1)));
- },
-
-
-
- pointerX: function(event) {
- return event.pageX || (event.clientX +
- (document.documentElement.scrollLeft || document.body.scrollLeft));
- },
-
-
-
- pointerY: function(event) {
- return event.pageY || (event.clientY +
- (document.documentElement.scrollTop || document.body.scrollTop));
- },
-
-
-
-
-
-
- stop: function(event) {
- if (event.preventDefault) {
- event.preventDefault();
- event.stopPropagation();
- } else {
- event.returnValue = false;
- }
- },
-
-
-
-
-
-
- findElement: function(event, tagName) {
- var element = Event.element(event);
- while (element.parentNode && (!element.tagName ||
- (element.tagName.toUpperCase() != tagName.toUpperCase())))
- element = element.parentNode;
- return element;
- },
-
-
-
-
- observers: false,
-
-
-
-
- _observeAndCache: function(element, name, observer, useCapture) {
- if (!this.observers) this.observers = ;
- if (element.addEventListener) {
- this.observers.push([element, name, observer, useCapture]);
- element.addEventListener(name, observer, useCapture);
- } else if (element.attachEvent) {
- this.observers.push([element, name, observer, useCapture]);
- element.attachEvent('on' + name, observer);
- }
- },
- unloadCache: function() {
- if (!Event.observers) return;
- for (var i = 0; i < Event.observers.length; i++) {
-
-
-
- Event.stopObserving.apply(this, Event.observers);
- Event.observers[0] = null;
- }
- Event.observers = false;
- },
-
-
-
- observe: function(element, name, observer, useCapture) {
- var element = $(element);
- useCapture = useCapture || false;
-
- if (name == 'keypress' &&
- ((navigator.appVersion.indexOf('AppleWebKit') > 0)
- || element.attachEvent))
- name = 'keydown';
-
- this._observeAndCache(element, name, observer, useCapture);
- },
-
-
-
- stopObserving: function(element, name, observer, useCapture) {
- var element = $(element);
- useCapture = useCapture || false;
-
- if (name == 'keypress' &&
- ((navigator.appVersion.indexOf('AppleWebKit') > 0)
- || element.detachEvent))
- name = 'keydown';
-
- if (element.removeEventListener) {
- element.removeEventListener(name, observer, useCapture);
- } else if (element.detachEvent) {
- element.detachEvent('on' + name, observer);
- }
- }
- });
-
-
-
-
- Event.observe(window, 'unload', Event.unloadCache, false);
-
-
-
-
- var Position = {
-
-
-
- includeScrollOffsets: false,
-
-
- prepare: function() {
- this.deltaX = window.pageXOffset
- || document.documentElement.scrollLeft
- || document.body.scrollLeft
- || 0;
- this.deltaY = window.pageYOffset
- || document.documentElement.scrollTop
- || document.body.scrollTop
- || 0;
- },
-
-
-
- realOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.scrollTop || 0;
- valueL += element.scrollLeft || 0;
- element = element.parentNode;
- } while (element);
- return [valueL, valueT];
- },
-
-
-
- cumulativeOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- element = element.offsetParent;
- } while (element);
- return [valueL, valueT];
- },
-
-
-
-
-
- within: function(element, x, y) {
- if (this.includeScrollOffsets)
- return this.withinIncludingScrolloffsets(element, x, y);
- this.xcomp = x;
- this.ycomp = y;
- this.offset = this.cumulativeOffset(element);
- return (y >= this.offset[1] &&
- y < this.offset[1] + element.offsetHeight &&
- x >= this.offset[0] &&
- x < this.offset[0] + element.offsetWidth);
- },
- withinIncludingScrolloffsets: function(element, x, y) {
- var offsetcache = this.realOffset(element);
- this.xcomp = x + offsetcache[0] - this.deltaX;
- this.ycomp = y + offsetcache[1] - this.deltaY;
- this.offset = this.cumulativeOffset(element);
- return (this.ycomp >= this.offset[1] &&
- this.ycomp < this.offset[1] + element.offsetHeight &&
- this.xcomp >= this.offset[0] &&
- this.xcomp < this.offset[0] + element.offsetWidth);
- },
-
-
-
-
-
- overlap: function(mode, element) {
- if (!mode) return 0;
- if (mode == 'vertical')
- return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
- element.offsetHeight;
- if (mode == 'horizontal')
- return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
- element.offsetWidth;
- },
-
-
-
-
- clone: function(source, target) {
- source = $(source);
- target = $(target);
- target.style.position = 'absolute';
- var offsets = this.cumulativeOffset(source);
- target.style.top = offsets[1] + 'px';
- target.style.left = offsets[0] + 'px';
- target.style.width = source.offsetWidth + 'px';
- target.style.height = source.offsetHeight + 'px';
- }
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在这里,"proto"可能是指协议(Protocol)或者原型(Prototype),而“学习protoType的好资料”则可能是指一个关于网络协议或者JavaScript原型链的学习资源。 首先,如果"protoType"指的是网络协议的实现,那么我们...
理解`prototype`是深入学习JavaScript面向对象编程的关键一步。`prototype`主要用于实现对象间的属性和方法共享,是JavaScript实现继承的一种方式。 ### 1. prototype的基本原理 每个JavaScript函数(包括构造函数...
在JavaScript中,`prototype`是一个非常重要的...理解和掌握`prototype`对于深入学习JavaScript至关重要。通过上述的讲解,你应该对`prototype`有了更全面的理解,也能够更好地运用它来构建和扩展JavaScript的应用。
《Prototype 1.5.1使用...总结,Prototype 1.5.1使用手册涵盖了该库的主要特性和用法,对于前端开发者来说,是一个不可或缺的学习和参考资料。通过深入学习和实践,可以极大地提升开发效率,创造出更优秀的Web应用。
《jQuery与Prototype:源码解析、资料汇集及插件应用》 在Web开发领域,JavaScript库如jQuery和Prototype因其强大的功能和易用性而备受开发者喜爱。本资源合集包含了这两个库的源码、相关资料以及插件,为开发者...
总结来说,这个压缩包是学习和使用Prototype JavaScript库的宝贵资源。通过阅读手册,你可以了解如何利用Prototype进行DOM操作、事件处理、Ajax通信和动画效果。而源代码文件`prototype-1.6.0.3.js`则让你可以直接在...
这份资料对于深入理解Prototype的工作原理和学习JavaScript面向对象编程具有极高的价值。 一、Prototype库简介 Prototype库由Sam Stephenson于2005年创建,它的主要目标是提升JavaScript在浏览器环境下的开发效率,...
压缩包中的“Prototype-v1.6.0.chm”是Prototype.js v1.6.0的离线帮助文档,包含了详细的API介绍和使用示例,是学习和参考的好资源。“prototype-1.6.0.3.js”则是该版本的源码文件,可以直接在项目中使用。而...
提供的"Prototype.js 中文chm教程"和"Prototype.js 中文电子图书"是学习Prototype.js的宝贵资料,它们涵盖了库的各个方面,从基本用法到高级技巧,帮助开发者快速上手。"Prototype中文帮助文档"则包含了详细的API...
李炎恢老师的JS学习资料是一套全面且深入的学习资源,适合初学者和有一定基础的开发者进阶学习。 首先,JavaScript是Web开发的三大核心技术之一,与HTML和CSS共同构建了网页的结构、样式和行为。它的主要应用领域...
《Prototype.js 中文帮助文档》是为JavaScript开发者提供的一份详尽参考资料,旨在帮助开发者更好地理解和使用Prototype.js库。Prototype.js是一个广泛使用的JavaScript框架,它为JavaScript编程提供了许多实用的...
通过本指南的学习,您将了解 Nokia Prototype SDK 的主要功能、系统需求以及安装过程中的关键步骤。 #### 二、系统需求 ##### 2.1 可选预安装要求 在安装 Nokia Prototype SDK 4.0 for Java ME 之前,建议确保满足...
### JS高级学习资料整理(第三月)知识点梳理 #### 一、函数的创建方式 在JavaScript中,函数可以通过以下三种方式进行创建: 1. **命名函数**:这是最常见的一种方式,可以直接通过`function`关键字来定义一个...
总的来说,《Prototype 1.4中文开发者手册》是学习和掌握Prototype JavaScript库的必备资料,无论你是初学者还是经验丰富的开发者,都能从中获益匪浅。通过阅读和实践,你将能够编写出更为高效、优雅的JavaScript...
Prototype API 文档是开发者理解和使用Prototype库的重要参考资料。 **一、核心概念** 1. **对象扩展**:Prototype 最为人所知的是它对JavaScript原生对象的扩展,如Array、String、Date等,增加了许多便捷的方法...
#### 三、Prototype.js 使用指南 ##### 3.1 $() 方法的使用 - **简介**: `$()` 方法是 `document.getElementById` 的一种便捷替代方案,它能够快速获取 DOM 元素。 - **单个 ID**: 可以通过 `$()` 方法传入一个...
《最新Prototype手册》详细解读 ...总结,"最新Prototype手册"是开发者深入理解并掌握Prototype.js的重要参考资料。通过阅读和实践,开发者能够提升JavaScript开发效率,构建更健壮、更高效的Web应用。
总的来说,“Ajax: Prototype.js全面手册”是深入理解并有效利用Prototype.js的宝贵资料,无论你是初学者还是经验丰富的开发者,都能从中受益。通过系统学习,你将能够编写出更加高效、简洁的JavaScript代码,提升...