⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prototype.js

📁 原名JSPackager
💻 JS
📖 第 1 页 / 共 4 页
字号:
return this.expression;}};Object.extend(Selector, {matchElements:function (elements, expression) {var selector = new Selector(expression);return elements.select(selector.match.bind(selector)).map(Element.extend);}, findElement:function (elements, expression, index) {if (typeof expression == "number") {index = expression, expression = false;}return Selector.matchElements(elements, expression || "*")[index || 0];}, findChildElements:function (element, expressions) {return expressions.map(function (expression) {return expression.match(/[^\s"]+(?:"[^"]*"[^\s"]+)*/g).inject([null], function (results, expr) {var selector = new Selector(expr);return results.inject([], function (elements, result) {return elements.concat(selector.findElements(result || element));});});}).flatten();}});function $$() {return Selector.findChildElements(document, $A(arguments));}var Form = {reset:function (form) {$(form).reset();return form;}, serializeElements:function (elements, getHash) {var data = elements.inject({}, function (result, element) {if (!element.disabled && element.name) {var key = element.name, value = $(element).getValue();if (value != undefined) {if (result[key]) {if (result[key].constructor != Array) {result[key] = [result[key]];}result[key].push(value);} else {result[key] = value;}}}return result;});return getHash ? data : Hash.toQueryString(data);}};Form.Methods = {serialize:function (form, getHash) {return Form.serializeElements(Form.getElements(form), getHash);}, getElements:function (form) {return $A($(form).getElementsByTagName("*")).inject([], function (elements, child) {if (Form.Element.Serializers[child.tagName.toLowerCase()]) {elements.push(Element.extend(child));}return elements;});}, getInputs:function (form, typeName, name) {form = $(form);var inputs = form.getElementsByTagName("input");if (!typeName && !name) {return $A(inputs).map(Element.extend);}for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {var input = inputs[i];if ((typeName && input.type != typeName) || (name && input.name != name)) {continue;}matchingInputs.push(Element.extend(input));}return matchingInputs;}, disable:function (form) {form = $(form);form.getElements().each(function (element) {element.blur();element.disabled = "true";});return form;}, enable:function (form) {form = $(form);form.getElements().each(function (element) {element.disabled = "";});return form;}, findFirstElement:function (form) {return $(form).getElements().find(function (element) {return element.type != "hidden" && !element.disabled && ["input", "select", "textarea"].include(element.tagName.toLowerCase());});}, focusFirstElement:function (form) {form = $(form);form.findFirstElement().activate();return form;}};Object.extend(Form, Form.Methods);Form.Element = {focus:function (element) {$(element).focus();return element;}, select:function (element) {$(element).select();return element;}};Form.Element.Methods = {serialize:function (element) {element = $(element);if (!element.disabled && element.name) {var value = element.getValue();if (value != undefined) {var pair = {};pair[element.name] = value;return Hash.toQueryString(pair);}}return "";}, getValue:function (element) {element = $(element);var method = element.tagName.toLowerCase();return Form.Element.Serializers[method](element);}, clear:function (element) {$(element).value = "";return element;}, present:function (element) {return $(element).value != "";}, activate:function (element) {element = $(element);element.focus();if (element.select && (element.tagName.toLowerCase() != "input" || !["button", "reset", "submit"].include(element.type))) {element.select();}return element;}, disable:function (element) {element = $(element);element.disabled = true;return element;}, enable:function (element) {element = $(element);element.blur();element.disabled = false;return element;}};Object.extend(Form.Element, Form.Element.Methods);var Field = Form.Element;var $F = Form.Element.getValue;Form.Element.Serializers = {input:function (element) {switch (element.type.toLowerCase()) {case "checkbox":case "radio":return Form.Element.Serializers.inputSelector(element);default:return Form.Element.Serializers.textarea(element);}}, inputSelector:function (element) {return element.checked ? element.value : null;}, textarea:function (element) {return element.value;}, select:function (element) {return this[element.type == "select-one" ? "selectOne" : "selectMany"](element);}, selectOne:function (element) {var index = element.selectedIndex;return index >= 0 ? this.optionValue(element.options[index]) : null;}, selectMany:function (element) {var values, length = element.length;if (!length) {return null;}for (var i = 0, values = []; i < length; i++) {var opt = element.options[i];if (opt.selected) {values.push(this.optionValue(opt));}}return values;}, optionValue:function (opt) {return Element.extend(opt).hasAttribute("value") ? opt.value : opt.text;}};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();var changed = ("string" == typeof this.lastValue && "string" == typeof value ? this.lastValue != value : String(this.lastValue) != String(value));if (changed) {this.callback(this.element, value);this.lastValue = value;}}};Form.Element.Observer = Class.create();Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {getValue:function () {return Form.Element.getValue(this.element);}});Form.Observer = Class.create();Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {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 () {Form.getElements(this.element).each(this.registerCallback.bind(this));}, registerCallback:function (element) {if (element.type) {switch (element.type.toLowerCase()) {case "checkbox":case "radio":Event.observe(element, "click", this.onElementEvent.bind(this));break;default:Event.observe(element, "change", this.onElementEvent.bind(this));break;}}}};Form.Element.EventObserver = Class.create();Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {getValue:function () {return Form.Element.getValue(this.element);}});Form.EventObserver = Class.create();Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {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, KEY_HOME:36, KEY_END:35, KEY_PAGEUP:33, KEY_PAGEDOWN:34, 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;event.cancelBubble = true;}}, 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, length = Event.observers.length; i < length; i++) {Event.stopObserving.apply(this, Event.observers[i]);Event.observers[i][0] = null;}Event.observers = false;}, observe:function (element, name, observer, useCapture) {element = $(element);useCapture = useCapture || false;if (name == "keypress" && (navigator.appVersion.match(/Konqueror|Safari|KHTML/) || element.attachEvent)) {name = "keydown";}Event._observeAndCache(element, name, observer, useCapture);}, stopObserving:function (element, name, observer, useCapture) {element = $(element);useCapture = useCapture || false;if (name == "keypress" && (navigator.appVersion.match(/Konqueror|Safari|KHTML/) || element.detachEvent)) {name = "keydown";}if (element.removeEventListener) {element.removeEventListener(name, observer, useCapture);} else {if (element.detachEvent) {try {element.detachEvent("on" + name, observer);}catch (e) {}}}}});if (navigator.appVersion.match(/\bMSIE\b/)) {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];}, positionedOffset:function (element) {var valueT = 0, valueL = 0;do {valueT += element.offsetTop || 0;valueL += element.offsetLeft || 0;element = element.offsetParent;if (element) {if (element.tagName == "BODY") {break;}var p = Element.getStyle(element, "position");if (p == "relative" || p == "absolute") {break;}}} while (element);return [valueL, valueT];}, offsetParent:function (element) {if (element.offsetParent) {return element.offsetParent;}if (element == document.body) {return element;}while ((element = element.parentNode) && element != document.body) {if (Element.getStyle(element, "position") != "static") {return element;}}return document.body;}, 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;}}, page:function (forElement) {var valueT = 0, valueL = 0;var element = forElement;do {valueT += element.offsetTop || 0;valueL += element.offsetLeft || 0;if (element.offsetParent == document.body) {if (Element.getStyle(element, "position") == "absolute") {break;}}} while (element = element.offsetParent);element = forElement;do {if (!window.opera || element.tagName == "BODY") {valueT -= element.scrollTop || 0;valueL -= element.scrollLeft || 0;}} while (element = element.parentNode);return [valueL, valueT];}, clone:function (source, target) {var options = Object.extend({setLeft:true, setTop:true, setWidth:true, setHeight:true, offsetTop:0, offsetLeft:0}, arguments[2] || {});source = $(source);var p = Position.page(source);target = $(target);var delta = [0, 0];var parent = null;if (Element.getStyle(target, "position") == "absolute") {parent = Position.offsetParent(target);delta = Position.page(parent);}if (parent == document.body) {delta[0] -= document.body.offsetLeft;delta[1] -= document.body.offsetTop;}if (options.setLeft) {target.style.left = (p[0] - delta[0] + options.offsetLeft) + "px";}if (options.setTop) {target.style.top = (p[1] - delta[1] + options.offsetTop) + "px";}if (options.setWidth) {target.style.width = source.offsetWidth + "px";}if (options.setHeight) {target.style.height = source.offsetHeight + "px";}}, absolutize:function (element) {element = $(element);if (element.style.position == "absolute") {return;}Position.prepare();var offsets = Position.positionedOffset(element);var top = offsets[1];var left = offsets[0];var width = element.clientWidth;var height = element.clientHeight;element._originalLeft = left - parseFloat(element.style.left || 0);element._originalTop = top - parseFloat(element.style.top || 0);element._originalWidth = element.style.width;element._originalHeight = element.style.height;element.style.position = "absolute";element.style.top = top + "px";element.style.left = left + "px";element.style.width = width + "px";element.style.height = height + "px";}, relativize:function (element) {element = $(element);if (element.style.position == "relative") {return;}Position.prepare();element.style.position = "relative";var top = parseFloat(element.style.top || 0) - (element._originalTop || 0);var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);element.style.top = top + "px";element.style.left = left + "px";element.style.height = element._originalHeight;element.style.width = element._originalWidth;}};if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {Position.cumulativeOffset = function (element) {var valueT = 0, valueL = 0;do {valueT += element.offsetTop || 0;valueL += element.offsetLeft || 0;if (element.offsetParent == document.body) {if (Element.getStyle(element, "position") == "absolute") {break;}}element = element.offsetParent;} while (element);return [valueL, valueT];};}Element.addMethods();});

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -