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

📄 engine.js

📁 动态增加表格和横向导航栏
💻 JS
📖 第 1 页 / 共 3 页
字号:
 * @param data The data to be marshalled * @param name The name of the data being marshalled */DWREngine._serializeAll = function(batch, referto, data, name) {  if (data == null) {    batch.map[name] = "null:null";    return;  }  switch (typeof data) {  case "boolean":    batch.map[name] = "boolean:" + data;    break;  case "number":    batch.map[name] = "number:" + data;    break;  case "string":    batch.map[name] = "string:" + encodeURIComponent(data);    break;  case "object":    if (data.dwrSerialize) {      batch.map[name] = data.dwrSerialize(batch, referto, data, name);    }    else if (data.nodeName) {      batch.map[name] = DWREngine._serializeXml(batch, referto, data, name);    }    else {      if (DWREngine._warningHandler) {        DWREngine._warningHandler("Object without dwrSerialize: " + typeof data + ", attempting default converter.");      }      batch.map[name] = "default:" + data;    }    break;  case "function":    // We just ignore functions.    break;  default:    if (DWREngine._warningHandler) {      DWREngine._warningHandler("Unexpected type: " + typeof data + ", attempting default converter.");    }    batch.map[name] = "default:" + data;    break;  }};/** @private Have we already converted this object? */DWREngine._lookup = function(referto, data, name) {  var lookup;  // Can't use a map: http://getahead.ltd.uk/ajax/javascript-gotchas  for (var i = 0; i < referto.length; i++) {    if (referto[i].data == data) {      lookup = referto[i];      break;    }  }  if (lookup) {    return "reference:" + lookup.name;  }  referto.push({ data:data, name:name });  return null;};/** @private Marshall an object */DWREngine._serializeObject = function(batch, referto, data, name) {  var ref = DWREngine._lookup(referto, this, name);  if (ref) return ref;  if (data.nodeName) {    return DWREngine._serializeXml(batch, referto, data, name);  }  // treat objects as an associative arrays  var reply = "Object:{";  var element;  for (element in this)  {    if (element != "dwrSerialize") {      batch.paramCount++;      var childName = "c" + DWREngine._batch.map.callCount + "-e" + batch.paramCount;      DWREngine._serializeAll(batch, referto, this[element], childName);      reply += encodeURIComponent(element);      reply += ":reference:";      reply += childName;      reply += ", ";    }  }  if (reply.substring(reply.length - 2) == ", ") {    reply = reply.substring(0, reply.length - 2);  }  reply += "}";  return reply;};/** @private Marshall an object */DWREngine._serializeXml = function(batch, referto, data, name) {  var ref = DWREngine._lookup(referto, this, name);  if (ref) {    return ref;  }  var output;  if (window.XMLSerializer) {    var serializer = new XMLSerializer();    output = serializer.serializeToString(data);  }  else {    output = data.toXml;  }  return "XML:" + encodeURIComponent(output);};/** @private Marshall an array */DWREngine._serializeArray = function(batch, referto, data, name) {  var ref = DWREngine._lookup(referto, this, name);  if (ref) return ref;  var reply = "Array:[";  for (var i = 0; i < this.length; i++) {    if (i != 0) {      reply += ",";    }    batch.paramCount++;    var childName = "c" + DWREngine._batch.map.callCount + "-e" + batch.paramCount;    DWREngine._serializeAll(batch, referto, this[i], childName);    reply += "reference:";    reply += childName;  }  reply += "]";  return reply;};/** @private Marshall a Boolean */DWREngine._serializeBoolean = function(batch, referto, data, name) {  return "Boolean:" + this;};/** @private Marshall a Number */DWREngine._serializeNumber = function(batch, referto, data, name) {  return "Number:" + this;};/** @private Marshall a String */DWREngine._serializeString = function(batch, referto, data, name) {  return "String:" + encodeURIComponent(this);};/** @private Marshall a Date */DWREngine._serializeDate = function(batch, referto, data, name) {  return "Date:" + this.getTime();};/** @private Convert an XML string into a DOM object. */DWREngine._unserializeDocument = function(xml) {  var dom;  if (window.DOMParser) {    var parser = new DOMParser();    dom = parser.parseFromString(xml, "text/xml");    if (!dom.documentElement || dom.documentElement.tagName == "parsererror") {      var message = dom.documentElement.firstChild.data;      message += "\n" + dom.documentElement.firstChild.nextSibling.firstChild.data;      throw message;    }    return dom;  }  else if (window.ActiveXObject) {    dom = DWREngine._newActiveXObject(DWREngine._DOMDocument);    dom.loadXML(xml);    // What happens on parse fail with IE?    return dom;  }  //else if (window.XMLHttpRequest) {  //  // Hack with XHR to get at Safari's parser  //  var req = new XMLHttpRequest;  //  var url = "data:application/xml;charset=utf-8," + encodeURIComponent(xml);  //  req.open("GET", url, false);  //  req.send(null);  //  return req.responseXML;  //}  else {    var div = document.createElement('div');    div.innerHTML = xml;    return div;  }};/** * @private Helper to find an ActiveX object that works. * @param axarray An array of strings to attempt to create ActiveX objects from */DWREngine._newActiveXObject = function(axarray) {  var returnValue;    for (var i = 0; i < axarray.length; i++) {    try {      returnValue = new ActiveXObject(axarray[i]);      break;    }    catch (ex) {    }  }  return returnValue;};/** @private To make up for the lack of encodeURIComponent() on IE5.0 */if (typeof window.encodeURIComponent === 'undefined') {  DWREngine._utf8 = function(wide) {    wide = "" + wide; // Make sure it is a string    var c;    var s;    var enc = "";    var i = 0;    while (i < wide.length) {      c = wide.charCodeAt(i++);      // handle UTF-16 surrogates      if (c >= 0xDC00 && c < 0xE000) continue;      if (c >= 0xD800 && c < 0xDC00) {        if (i >= wide.length) continue;        s = wide.charCodeAt(i++);        if (s < 0xDC00 || c >= 0xDE00) continue;        c = ((c - 0xD800) << 10) + (s - 0xDC00) + 0x10000;      }      // output value      if (c < 0x80) {        enc += String.fromCharCode(c);      }      else if (c < 0x800) {        enc += String.fromCharCode(0xC0 + (c >> 6), 0x80 + (c & 0x3F));      }      else if (c < 0x10000) {        enc += String.fromCharCode(0xE0 + (c >> 12), 0x80 + (c >> 6 & 0x3F), 0x80 + (c & 0x3F));      }      else {        enc += String.fromCharCode(0xF0 + (c >> 18), 0x80 + (c >> 12 & 0x3F), 0x80 + (c >> 6 & 0x3F), 0x80 + (c & 0x3F));      }    }    return enc;  }  DWREngine._hexchars = "0123456789ABCDEF";  DWREngine._toHex = function(n) {    return DWREngine._hexchars.charAt(n >> 4) + DWREngine._hexchars.charAt(n & 0xF);  }  DWREngine._okURIchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-";  window.encodeURIComponent = function(s)  {    s = DWREngine._utf8(s);    var c;    var enc = "";    for (var i= 0; i<s.length; i++) {      if (DWREngine._okURIchars.indexOf(s.charAt(i)) == -1) {        enc += "%" + DWREngine._toHex(s.charCodeAt(i));      }      else {        enc += s.charAt(i);      }    }    return enc;  }}/** @private To make up for the lack of Array.splice() on IE5.0 */if (typeof Array.prototype.splice === 'undefined') {  Array.prototype.splice = function(ind, cnt)  {    if (arguments.length == 0) {      return ind;    }    if (typeof ind != "number") {      ind = 0;    }    if (ind < 0) {      ind = Math.max(0,this.length + ind);    }    if (ind > this.length) {      if (arguments.length > 2) {        ind = this.length;      }      else {        return [];      }    }    if (arguments.length < 2) {      cnt = this.length-ind;    }    cnt = (typeof cnt == "number") ? Math.max(0, cnt) : 0;    removeArray = this.slice(ind, ind + cnt);    endArray = this.slice(ind + cnt);    this.length = ind;    for (var i = 2; i < arguments.length; i++) {      this[this.length] = arguments[i];    }    for (i = 0; i < endArray.length; i++) {      this[this.length] = endArray[i];    }    return removeArray;  }}/** @private To make up for the lack of Array.shift() on IE5.0 */if (typeof Array.prototype.shift === 'undefined') {  Array.prototype.shift = function(str) {    var val = this[0];    for (var i = 1; i < this.length; ++i) {      this[i - 1] = this[i];    }    this.length--;    return val;  }}/** @private To make up for the lack of Array.unshift() on IE5.0 */if (typeof Array.prototype.unshift === 'undefined') {  Array.prototype.unshift = function() {    var i = unshift.arguments.length;    for (var j = this.length - 1; j >= 0; --j) {      this[j + i] = this[j];    }    for (j = 0; j < i; ++j) {      this[j] = unshift.arguments[j];    }  }}/** @private To make up for the lack of Array.push() on IE5.0 */if (typeof Array.prototype.push === 'undefined') {  Array.prototype.push = function() {    var sub = this.length;    for (var i = 0; i < push.arguments.length; ++i) {      this[sub] = push.arguments[i];      sub++;    }  }}/** @private To make up for the lack of Array.pop() on IE5.0 */if (typeof Array.prototype.pop === 'undefined') {  Array.prototype.pop = function() {    var lastElement = this[this.length - 1];    this.length--;    return lastElement;  }}

⌨️ 快捷键说明

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