📄 prototype.js
字号:
this.start = start;this.end = end;this.exclusive = exclusive;}, _each:function (iterator) {var value = this.start;while (this.include(value)) {iterator(value);value = value.succ();}}, include:function (value) {if (value < this.start) {return false;}if (this.exclusive) {return value < this.end;}return value <= this.end;}});var $R = function (start, end, exclusive) {return new ObjectRange(start, end, exclusive);};var Ajax = {getTransport:function () {return Try.these(function () {return new XMLHttpRequest();}, function () {return new ActiveXObject("Msxml2.XMLHTTP");}, function () {return new ActiveXObject("Microsoft.XMLHTTP");}) || false;}, activeRequestCount:0};Ajax.Responders = {responders:[], _each:function (iterator) {this.responders._each(iterator);}, register:function (responder) {if (!this.include(responder)) {this.responders.push(responder);}}, unregister:function (responder) {this.responders = this.responders.without(responder);}, dispatch:function (callback, request, transport, json) {this.each(function (responder) {if (typeof responder[callback] == "function") {try {responder[callback].apply(responder, [request, transport, json]);}catch (e) {}}});}};Object.extend(Ajax.Responders, Enumerable);Ajax.Responders.register({onCreate:function () {Ajax.activeRequestCount++;}, onComplete:function () {Ajax.activeRequestCount--;}});Ajax.Base = function () {};Ajax.Base.prototype = {setOptions:function (options) {this.options = {method:"post", asynchronous:true, contentType:"application/x-www-form-urlencoded", encoding:"UTF-8", parameters:""};Object.extend(this.options, options || {});this.options.method = this.options.method.toLowerCase();if (typeof this.options.parameters == "string") {this.options.parameters = this.options.parameters.toQueryParams();}}};Ajax.Request = Class.create();Ajax.Request.Events = ["Uninitialized", "Loading", "Loaded", "Interactive", "Complete"];Ajax.Request.prototype = Object.extend(new Ajax.Base(), {_complete:false, initialize:function (url, options) {this.transport = Ajax.getTransport();this.setOptions(options);this.request(url);}, request:function (url) {this.url = url;this.method = this.options.method;var params = this.options.parameters;if (!["get", "post"].include(this.method)) {params["_method"] = this.method;this.method = "post";}params = Hash.toQueryString(params);if (params && /Konqueror|Safari|KHTML/.test(navigator.userAgent)) {params += "&_=";}if (this.method == "get" && params) {this.url += (this.url.indexOf("?") > -1 ? "&" : "?") + params;}try {Ajax.Responders.dispatch("onCreate", this, this.transport);this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous);if (this.options.asynchronous) {setTimeout(function () {this.respondToReadyState(1);}.bind(this), 10);}this.transport.onreadystatechange = this.onStateChange.bind(this);this.setRequestHeaders();var body = this.method == "post" ? (this.options.postBody || params) : null;this.transport.send(body);if (!this.options.asynchronous && this.transport.overrideMimeType) {this.onStateChange();}}catch (e) {this.dispatchException(e);}}, onStateChange:function () {var readyState = this.transport.readyState;if (readyState > 1 && !((readyState == 4) && this._complete)) {this.respondToReadyState(this.transport.readyState);}}, setRequestHeaders:function () {var headers = {"X-Requested-With":"XMLHttpRequest", "X-Prototype-Version":Prototype.Version, "Accept":"text/javascript, text/html, application/xml, text/xml, */*"};if (this.method == "post") {headers["Content-type"] = this.options.contentType + (this.options.encoding ? "; charset=" + this.options.encoding : "");if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0, 2005])[1] < 2005) {headers["Connection"] = "close";}}if (typeof this.options.requestHeaders == "object") {var extras = this.options.requestHeaders;if (typeof extras.push == "function") {for (var i = 0, length = extras.length; i < length; i += 2) {headers[extras[i]] = extras[i + 1];}} else {$H(extras).each(function (pair) {headers[pair.key] = pair.value;});}}for (var name in headers) {this.transport.setRequestHeader(name, headers[name]);}}, success:function () {return !this.transport.status || (this.transport.status >= 200 && this.transport.status < 300);}, respondToReadyState:function (readyState) {var state = Ajax.Request.Events[readyState];var transport = this.transport, json = this.evalJSON();if (state == "Complete") {try {this._complete = true;(this.options["on" + this.transport.status] || this.options["on" + (this.success() ? "Success" : "Failure")] || Prototype.emptyFunction)(transport, json);}catch (e) {this.dispatchException(e);}if ((this.getHeader("Content-type") || "text/javascript").strip().match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i)) {this.evalResponse();}}try {(this.options["on" + state] || Prototype.emptyFunction)(transport, json);Ajax.Responders.dispatch("on" + state, this, transport, json);}catch (e) {this.dispatchException(e);}if (state == "Complete") {this.transport.onreadystatechange = Prototype.emptyFunction;}}, getHeader:function (name) {try {return this.transport.getResponseHeader(name);}catch (e) {return null;}}, evalJSON:function () {try {var json = this.getHeader("X-JSON");return json ? eval("(" + json + ")") : null;}catch (e) {return null;}}, evalResponse:function () {try {return eval(this.transport.responseText);}catch (e) {this.dispatchException(e);}}, dispatchException:function (exception) {(this.options.onException || Prototype.emptyFunction)(this, exception);Ajax.Responders.dispatch("onException", this, exception);}});Ajax.Updater = Class.create();Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), {initialize:function (container, url, options) {this.container = {success:(container.success || container), failure:(container.failure || (container.success ? null : container))};this.transport = Ajax.getTransport();this.setOptions(options);var onComplete = this.options.onComplete || Prototype.emptyFunction;this.options.onComplete = (function (transport, param) {this.updateContent();onComplete(transport, param);}).bind(this);this.request(url);}, updateContent:function () {var receiver = this.container[this.success() ? "success" : "failure"];var response = this.transport.responseText;if (!this.options.evalScripts) {response = response.stripScripts();}if (receiver = $(receiver)) {if (this.options.insertion) {new this.options.insertion(receiver, response);} else {receiver.update(response);}}if (this.success()) {if (this.onComplete) {setTimeout(this.onComplete.bind(this), 10);}}}});Ajax.PeriodicalUpdater = Class.create();Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), {initialize:function (container, url, options) {this.setOptions(options);this.onComplete = this.options.onComplete;this.frequency = (this.options.frequency || 2);this.decay = (this.options.decay || 1);this.updater = {};this.container = container;this.url = url;this.start();}, start:function () {this.options.onComplete = this.updateComplete.bind(this);this.onTimerEvent();}, stop:function () {this.updater.options.onComplete = undefined;clearTimeout(this.timer);(this.onComplete || Prototype.emptyFunction).apply(this, arguments);}, updateComplete:function (request) {if (this.options.decay) {this.decay = (request.responseText == this.lastText ? this.decay * this.options.decay : 1);this.lastText = request.responseText;}this.timer = setTimeout(this.onTimerEvent.bind(this), this.decay * this.frequency * 1000);}, onTimerEvent:function () {this.updater = new Ajax.Updater(this.container, this.url, this.options);}});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);}if (Prototype.BrowserFeatures.XPath) {document._getElementsByXPath = function (expression, parentElement) {var results = [];var query = document.evaluate(expression, $(parentElement) || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);for (var i = 0, length = query.snapshotLength; i < length; i++) {results.push(query.snapshotItem(i));}return results;};}document.getElementsByClassName = function (className, parentElement) {if (Prototype.BrowserFeatures.XPath) {var q = ".//*[contains(concat(' ', @class, ' '), ' " + className + " ')]";return document._getElementsByXPath(q, parentElement);} else {var children = ($(parentElement) || document.body).getElementsByTagName("*");var elements = [], child;for (var i = 0, length = children.length; i < length; i++) {child = children[i];if (Element.hasClassName(child, className)) {elements.push(Element.extend(child));}}return elements;}};if (!window.Element) {var Element = new Object();}Element.extend = function (element) {if (!element || _nativeExtensions || element.nodeType == 3) {return element;}if (!element._extended && element.tagName && element != window) {var methods = Object.clone(Element.Methods), cache = Element.extend.cache;if (element.tagName == "FORM") {Object.extend(methods, Form.Methods);}if (["INPUT", "TEXTAREA", "SELECT"].include(element.tagName)) {Object.extend(methods, Form.Element.Methods);}Object.extend(methods, Element.Methods.Simulated);for (var property in methods) {var value = methods[property];if (typeof value == "function" && !(property in element)) {element[property] = cache.findOrStore(value);}}}element._extended = true;return element;};Element.extend.cache = {findOrStore:function (value) {return this[value] = this[value] || function () {return value.apply(null, [this].concat($A(arguments)));};}};Element.Methods = {visible:function (element) {return $(element).style.display != "none";}, toggle:function (element) {element = $(element);Element[Element.visible(element) ? "hide" : "show"](element);return element;}, hide:function (element) {$(element).style.display = "none";return element;}, show:function (element) {$(element).style.display = "";return element;}, remove:function (element) {element = $(element);element.parentNode.removeChild(element);return element;}, update:function (element, html) {html = typeof html == "undefined" ? "" : html.toString();$(element).innerHTML = html.stripScripts();setTimeout(function () {html.evalScripts();}, 10);return element;}, replace:function (element, html) {element = $(element);html = typeof html == "undefined" ? "" : html.toString();if (element.outerHTML) {element.outerHTML = html.stripScripts();} else {var range = element.ownerDocument.createRange();range.selectNodeContents(element);element.parentNode.replaceChild(range.createContextualFragment(html.stripScripts()), element);}setTimeout(function () {html.evalScripts();}, 10);return element;}, inspect:function (element) {element = $(element);var result = "<" + element.tagName.toLowerCase();$H({"id":"id", "className":"class"}).each(function (pair) {var property = pair.first(), attribute = pair.last();var value = (element[property] || "").toString();if (value) {result += " " + attribute + "=" + value.inspect(true);}});return result + ">";}, recursivelyCollect:function (element, property) {element = $(element);var elements = [];while (element = element[property]) {if (element.nodeType == 1) {elements.push(Element.extend(element));}}return elements;}, ancestors:function (element) {return $(element).recursivelyCollect("parentNode");}, descendants:function (element) {return $A($(element).getElementsByTagName("*"));}, immediateDescendants:function (element) {if (!(element = $(element).firstChild)) {return [];}while (element && element.nodeType != 1) {element = element.nextSibling;}if (element) {return [element].concat($(element).nextSiblings());}return [];}, previousSiblings:function (element) {return $(element).recursivelyCollect("previousSibling");}, nextSiblings:function (element) {return $(element).recursivelyCollect("nextSibling");}, siblings:function (element) {element = $(element);return element.previousSiblings().reverse().concat(element.nextSiblings());}, match:function (element, selector) {if (typeof selector == "string") {selector = new Selector(selector);}return selector.match($(element));}, up:function (element, expression, index) {return Selector.findElement($(element).ancestors(), expression, index);}, down:function (element, expression, index) {return Selector.findElement($(element).descendants(), expression, index);}, previous:function (element, expression, index) {return Selector.findElement($(element).previousSiblings(), expression, index);}, next:function (element, expression, index) {return Selector.findElement($(element).nextSiblings(), expression, index);}, getElementsBySelector:function () {var args = $A(arguments), element = $(args.shift());return Selector.findChildElements(element, args);}, getElementsByClassName:function (element, className) {return document.getElementsByClassName(className, element);}, readAttribute:function (element, name) {element = $(element);if (document.all && !window.opera) {var t = Element._attributeTranslations;if (t.values[name]) {return t.values[name](element, name);}if (t.names[name]) {name = t.names[name];}var attribute = element.attributes[name];if (attribute) {return attribute.nodeValue;}}return element.getAttribute(name);}, getHeight:function (element) {return $(element).getDimensions().height;}, getWidth:function (element) {return $(element).getDimensions().width;}, classNames:function (element) {return new Element.ClassNames(element);}, hasClassName:function (element, className) {if (!(element = $(element))) {return;}var elementClassName = element.className;if (elementClassName.length == 0) {return false;}if (elementClassName == className || elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) {return true;}return false;}, addClassName:function (element, className) {if (!(element = $(element))) {return;}Element.classNames(element).add(className);return element;}, removeClassName:function (element, className) {if (!(element = $(element))) {return;}Element.classNames(element).remove(className);return element;}, toggleClassName:function (element, className) {if (!(element = $(element))) {return;}Element.classNames(element)[element.hasClassName(className) ? "remove" : "add"](className);return element;}, observe:function () {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -