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

📄 prototype.js

📁 经典编程900例(C语言),主要是C基础知识
💻 JS
📖 第 1 页 / 共 5 页
字号:
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) {    // extend element because hasAttribute may not be native    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;    }  },  // find the first node with the given tagName, starting from the  // node the event was triggered on; traverses the DOM upwards  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) {}    }  }});/* prevent memory leaks in IE */if (navigator.appVersion.match(/\bMSIE\b/))  Event.observe(window, 'unload', Event.unloadCache, false);var Position = {  // set to true if needed, warning: firefox performance problems  // NOT neeeded for page scrolling, only if draggable contained in  // scrollable elements  includeScrollOffsets: false,  // must be called before calling withinIncludingScrolloffset, every time the  // page is scrolled  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 {   

⌨️ 快捷键说明

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