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

📄 prototype.js

📁 ZK 基础介绍 功能操作 模块 结合数据库操作
💻 JS
📖 第 1 页 / 共 5 页
字号:
    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;  }}*//*--------------------------------------------------------------------------*//* Tom M. Yeh, Potix: remove unused codesAbstract.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);  }});*//*--------------------------------------------------------------------------*//* Tom M. Yeh, Potix: remove unused codesAbstract.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, {/* Tom M. Yeh, Potix: remove unused codes  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;    }  },/* Tom M. Yeh, Potix: remove unused codes  // 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, tagName = element.tagName;    do {//Tom M. Yeh, Potix: fix opera bug (see the page function)// If tagName is "IMG" or "TR", the "DIV" element's scrollTop should be ignored.// Because the offsetTop of element "IMG" or "TR" is excluded its scrollTop.  if (!window.opera || element.tagName == 'BODY' || (tagName != "TR" && tagName != "IMG"  && element.tagName == 'DIV') ) {       valueT += element.scrollTop  || 0;      valueL += element.scrollLeft || 0;}      element = element.parentNode;    } while (element);    return [valueL, valueT];  },  cumulativeOffset: function(element) {    var valueT = 0, valueL = 0, operaBug = false, el = element.parentNode;//Jumper Chen, Poitx: fix gecko difference, the offset of gecko excludes its border-width when its CSS position is relative or absolute.		if (zk.gecko) {		while (el && el != document.body) {			var style = Element.getStyle(el, "position");			if (style == "relative" || style == "absolute") {				valueT += $int(Element.getStyle(el, "border-top-width"));				valueL += $int(Element.getStyle(el, "border-left-width"));			}	        el = el.parentNode;	    }	}	    do {//Tom M. Yeh, Potix: Bug 1577880: fix originated from http://dev.rubyonrails.org/ticket/4843if (Element.getStyle(element, "position") == 'fixed') {	valueT += zk.innerY() + element.offsetTop;	valueL += zk.innerX() + element.offsetLeft;	break;} else {//Jumper Chen, Poitx: fix opera bug. If the parent of "INPUT" or "SPAN" element is "DIV" // and the scrollTop of "DIV" element is more than 0, the offsetTop of "INPUT" or "SPAN" element always is wrong.	if (window.opera) { 		if (element.nodeName == "SPAN" || element.nodeName == "INPUT") operaBug = true;		else if (element.nodeName == "DIV" && operaBug) {			operaBug = false;			if (element.scrollTop != 0) valueT += element.scrollTop  || 0;		} else operaBug = false;				}      valueT += element.offsetTop  || 0;      valueL += element.offsetLeft || 0;//Tom M. Yeh, Potix: Bug 1721158: In FF, element.offsetParent is null in this case      element = zk.gecko && element != document.body ? Position.offsetParent(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;//Tom M. Yeh, Potix: Bug 1721158: In FF, element.offsetParent is null in this case      element = zk.gecko && element != document.body ? Position.offsetParent(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)//Tom M. Yeh, Potix: in IE, style might not be available      if (element.style && Element.getStyle(element, 'position') != 'static')        return element;    return document.body;  },  // caches x/y coordinate pair to use with overlap  within: function(element, x, y) {    if (this.includeScrollOffsets)//Tom Yeh, Potix: make the name shorter//      return this.withinIncludingScrolloffsets(element, x, y);      return this.withinScroll(element, x, y);    this.xcomp = x;    this.ycomp = y;    this.offset = this.cumulativeOffset(element);    return (y >= this.offset[1] &&            y <  this.offset[1] + zk.offsetHeight(element) && //Tom M. Yeh, Potix: safari bug            x >= this.offset[0] &&            x <  this.offset[0] + zk.offsetWidth(element)); //Tom M. Yeh, Potix: safari bug  },//Tom Yeh, Potix: make the name shorter//  withinIncludingScrolloffsets: function(element, x, y) {  withinScroll: 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);*/ // Jumper Chen, Potix: bug #1692556	this.xcomp = x;	this.ycomp = y;	this.offset = zk.revisedOffset(element);    return (this.ycomp >= this.offset[1] &&            this.ycomp <  this.offset[1] + zk.offsetHeight(element) && //Tom M. Yeh, Potix: safari bug            this.xcomp >= this.offset[0] &&            this.xcomp <  this.offset[0] + zk.offsetWidth(element)); //Tom M. Yeh, Potix: safari bug  },  // within must be called directly before  overlap: function(mode, element) {    if (!mode) return 0;    if (mode == 'vertical')      return ((this.offset[1] + zk.offsetHeight(element)) - this.ycomp) / //Tom M. Yeh, Potix: safari bug        zk.offsetHeight(element); //Tom M. Yeh, Potix: safari bug    if (mode == 'horizontal')      return ((this.offset[0] + zk.offsetWidth(element)) - this.xcomp) / //Tom M. Yeh, Potix: safari bug        zk.offsetWidth(element); //Tom M. Yeh, Potix: safari bug  },  page: function(forElement) {    var valueT = 0, valueL = 0;    var element = forElement;    do {      valueT += element.offsetTop  || 0;      valueL += element.offsetLeft || 0;      // Safari fix      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];  },/* Tom M. Yeh, Potix: remove unused codes  clone: function(source, target) {    var options = Object.extend({      setLeft:    true,      setTop:     true,      setWidth:   true,      setHeight:  true,      offsetTop:  0,      offsetLeft: 0    }, arguments[2] || {})    // find page position of source    source = $(source);    var p = Position.page(source);    // find coordinate system to use    target = $(target);    var delta = [0, 0];    var parent = null;    // delta [0,0] will do fine with position: fixed elements,    // position:absolute needs offsetParent deltas    if (Element.getStyle(target,'position') == 'absolute') {      parent = Position.offsetParent(target);      delta = Position.page(parent);    }    // correct by body offsets (fixes Safari)    if (parent == document.body) {      delta[0] -= document.body.offsetLeft;      delta[1] -= document.body.offsetTop;    }    // set position    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 = zk.offsetWidth(source) + 'px'; //Tom M. Yeh, Potix: safari bug    if(options.setHeight) target.style.height = zk.offsetHeight(source) + 'px'; //Tom M. Yeh, Potix: safari bug  },*/  absolutize: function(element) {    el

⌨️ 快捷键说明

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