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

📄 prototype.js

📁 这是一款js组建
💻 JS
📖 第 1 页 / 共 5 页
字号:
    return results;  },  reject: function(iterator) {    var results = [];    this.each(function(value, index) {      if (!iterator(value, index))        results.push(value);    });    return results;  },  sortBy: function(iterator) {    return this.map(function(value, index) {      return {value: value, criteria: iterator(value, index)};    }).sort(function(left, right) {      var a = left.criteria, b = right.criteria;      return a < b ? -1 : a > b ? 1 : 0;    }).pluck('value');  },  toArray: function() {    return this.map();  },  zip: function() {    var iterator = Prototype.K, args = $A(arguments);    if (typeof args.last() == 'function')      iterator = args.pop();    var collections = [this].concat(args).map($A);    return this.map(function(value, index) {      return iterator(collections.pluck(index));    });  },  size: function() {    return this.toArray().length;  },  inspect: function() {    return '#<Enumerable:' + this.toArray().inspect() + '>';  }}Object.extend(Enumerable, {  map:     Enumerable.collect,  find:    Enumerable.detect,  select:  Enumerable.findAll,  member:  Enumerable.include,  entries: Enumerable.toArray});var $A = Array.from = function(iterable) {  if (!iterable) return [];  if (iterable.toArray) {    return iterable.toArray();  } else {    var results = [];    for (var i = 0, length = iterable.length; i < length; i++)      results.push(iterable[i]);    return results;  }}Object.extend(Array.prototype, Enumerable);if (!Array.prototype._reverse)  Array.prototype._reverse = Array.prototype.reverse;Object.extend(Array.prototype, {  _each: function(iterator) {    for (var i = 0, length = this.length; i < length; i++)      iterator(this[i]);  },  clear: function() {    this.length = 0;    return this;  },  first: function() {    return this[0];  },  last: function() {    return this[this.length - 1];  },  compact: function() {    return this.select(function(value) {      return value != null;    });  },  flatten: function() {    return this.inject([], function(array, value) {      return array.concat(value && value.constructor == Array ?        value.flatten() : [value]);    });  },  without: function() {    var values = $A(arguments);    return this.select(function(value) {      return !values.include(value);    });  },  indexOf: function(object) {    for (var i = 0, length = this.length; i < length; i++)      if (this[i] == object) return i;    return -1;  },  reverse: function(inline) {    return (inline !== false ? this : this.toArray())._reverse();  },  reduce: function() {    return this.length > 1 ? this : this[0];  },  uniq: function() {    return this.inject([], function(array, value) {      return array.include(value) ? array : array.concat([value]);    });  },  clone: function() {    return [].concat(this);  },  size: function() {    return this.length;  },  inspect: function() {    return '[' + this.map(Object.inspect).join(', ') + ']';  }});Array.prototype.toArray = Array.prototype.clone;function $w(string){  string = string.strip();  return string ? string.split(/\s+/) : [];}if(window.opera){  Array.prototype.concat = function(){    var array = [];    for(var i = 0, length = this.length; i < length; i++) array.push(this[i]);    for(var i = 0, length = arguments.length; i < length; i++) {      if(arguments[i].constructor == Array) {        for(var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++)          array.push(arguments[i][j]);      } else {        array.push(arguments[i]);      }    }    return array;  }}var Hash = function(obj) {  Object.extend(this, obj || {});};Object.extend(Hash, {  toQueryString: function(obj) {    var parts = [];	  this.prototype._each.call(obj, function(pair) {      if (!pair.key) return;      if (pair.value && pair.value.constructor == Array) {        var values = pair.value.compact();        if (values.length < 2) pair.value = values.reduce();        else {        	key = encodeURIComponent(pair.key);          values.each(function(value) {            value = value != undefined ? encodeURIComponent(value) : '';            parts.push(key + '=' + encodeURIComponent(value));          });          return;        }      }      if (pair.value == undefined) pair[1] = '';      parts.push(pair.map(encodeURIComponent).join('='));	  });    return parts.join('&');  }});Object.extend(Hash.prototype, Enumerable);Object.extend(Hash.prototype, {  _each: function(iterator) {    for (var key in this) {      var value = this[key];      if (value && value == Hash.prototype[key]) continue;      var pair = [key, value];      pair.key = key;      pair.value = value;      iterator(pair);    }  },  keys: function() {    return this.pluck('key');  },  values: function() {    return this.pluck('value');  },  merge: function(hash) {    return $H(hash).inject(this, function(mergedHash, pair) {      mergedHash[pair.key] = pair.value;      return mergedHash;    });  },  remove: function() {    var result;    for(var i = 0, length = arguments.length; i < length; i++) {      var value = this[arguments[i]];      if (value !== undefined){        if (result === undefined) result = value;        else {          if (result.constructor != Array) result = [result];          result.push(value)        }      }      delete this[arguments[i]];    }    return result;  },  toQueryString: function() {    return Hash.toQueryString(this);  },  inspect: function() {    return '#<Hash:{' + this.map(function(pair) {      return pair.map(Object.inspect).join(': ');    }).join(', ') + '}>';  }});function $H(object) {  if (object && object.constructor == Hash) return object;  return new Hash(object);};ObjectRange = Class.create();Object.extend(ObjectRange.prototype, Enumerable);Object.extend(ObjectRange.prototype, {  initialize: function(start, end, exclusive) {    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)) {      // simulate other verbs over post      params['_method'] = this.method;      this.method = 'post';    }    params = Hash.toQueryString(params);    if (params && /Konqueror|Safari|KHTML/.test(navigator.userAgent)) params += '&_='    // when GET, append parameters to URL    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);      /* Force Firefox to handle ready state 4 for synchronous requests */      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 : '');      /* Force "Connection: close" for older Mozilla browsers to work       * around a bug where XMLHttpRequest sends an incorrect       * Content-length header. See Mozilla Bugzilla #246651.       */      if (this.transport.overrideMimeType &&          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)            headers['Connection'] = 'close';    }    // user-defined headers    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);      }

⌨️ 快捷键说明

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