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

📄 engine.js.svn-base

📁 dwr demo DWR的一个实例。。DWR的一个实例
💻 SVN-BASE
📖 第 1 页 / 共 3 页
字号:
        // Comet replies might have already partially executed        if (batch.isPoll && batch.map.partialResponse == dwr.engine._partialResponseYes) {          dwr.engine._processCometResponse(reply, batch);        }        else {          if (reply.search("//#DWR") == -1) {            dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidReply", message:"Invalid reply from server" });          }          else {            toEval = reply;          }        }      }    }  }  catch (ex) {    dwr.engine._handleWarning(batch, ex);  }  dwr.engine._callPostHooks(batch);  // Outside of the try/catch so errors propogate normally:  dwr.engine._receivedBatch = batch;  if (toEval != null) toEval = toEval.replace(dwr.engine._scriptTagProtection, "");  dwr.engine._eval(toEval);  dwr.engine._receivedBatch = null;  dwr.engine._clearUp(batch);};/** @private Called by the server: Execute a callback */dwr.engine._remoteHandleCallback = function(batchId, callId, reply) {  var batch = dwr.engine._batches[batchId];  if (batch == null) {    dwr.engine._debug("Warning: batch == null in remoteHandleCallback for batchId=" + batchId, true);    return;  }  // Error handlers inside here indicate an error that is nothing to do  // with DWR so we handle them differently.  try {    var handlers = batch.handlers[callId];    if (!handlers) {      dwr.engine._debug("Warning: Missing handlers. callId=" + callId, true);    }    else if (typeof handlers.callback == "function") handlers.callback(reply);  }  catch (ex) {    dwr.engine._handleError(batch, ex);  }};/** @private Called by the server: Handle an exception for a call */dwr.engine._remoteHandleException = function(batchId, callId, ex) {  var batch = dwr.engine._batches[batchId];  if (batch == null) { dwr.engine._debug("Warning: null batch in remoteHandleException", true); return; }  var handlers = batch.handlers[callId];  if (handlers == null) { dwr.engine._debug("Warning: null handlers in remoteHandleException", true); return; }  if (ex.message == undefined) ex.message = "";  if (typeof handlers.exceptionHandler == "function") handlers.exceptionHandler(ex.message, ex);  else if (typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex);};/** @private Called by the server: The whole batch is broken */dwr.engine._remoteHandleBatchException = function(ex, batchId) {  var searchBatch = (dwr.engine._receivedBatch == null && batchId != null);  if (searchBatch) {    dwr.engine._receivedBatch = dwr.engine._batches[batchId];  }  if (ex.message == undefined) ex.message = "";  dwr.engine._handleError(dwr.engine._receivedBatch, ex);  if (searchBatch) {    dwr.engine._receivedBatch = null;    dwr.engine._clearUp(dwr.engine._batches[batchId]);  }};/** @private Called by the server: Reverse ajax should not be used */dwr.engine._remotePollCometDisabled = function(ex, batchId) {  dwr.engine.setActiveReverseAjax(false);  var searchBatch = (dwr.engine._receivedBatch == null && batchId != null);  if (searchBatch) {    dwr.engine._receivedBatch = dwr.engine._batches[batchId];  }  if (ex.message == undefined) ex.message = "";  dwr.engine._handleError(dwr.engine._receivedBatch, ex);  if (searchBatch) {    dwr.engine._receivedBatch = null;    dwr.engine._clearUp(dwr.engine._batches[batchId]);  }};/** @private Called by the server: An IFrame reply is about to start */dwr.engine._remoteBeginIFrameResponse = function(iframe, batchId) {  if (iframe != null) dwr.engine._receivedBatch = iframe.batch;  dwr.engine._callPostHooks(dwr.engine._receivedBatch);};/** @private Called by the server: An IFrame reply is just completing */dwr.engine._remoteEndIFrameResponse = function(batchId) {  dwr.engine._clearUp(dwr.engine._receivedBatch);  dwr.engine._receivedBatch = null;};/** @private This is a hack to make the context be this window */dwr.engine._eval = function(script) {  if (script == null) return null;  if (script == "") { dwr.engine._debug("Warning: blank script", true); return null; }  // dwr.engine._debug("Exec: [" + script + "]", true);  return eval(script);};/** @private Called as a result of a request timeout */dwr.engine._abortRequest = function(batch) {  if (batch && !batch.completed) {    clearInterval(batch.interval);    dwr.engine._clearUp(batch);    if (batch.req) batch.req.abort();    dwr.engine._handleError(batch, { name:"dwr.engine.timeout", message:"Timeout" });  }};/** @private call all the post hooks for a batch */dwr.engine._callPostHooks = function(batch) {  if (batch.postHooks) {    for (var i = 0; i < batch.postHooks.length; i++) {      batch.postHooks[i]();    }    batch.postHooks = null;  }}/** @private A call has finished by whatever means and we need to shut it all down. */dwr.engine._clearUp = function(batch) {  if (!batch) { dwr.engine._debug("Warning: null batch in dwr.engine._clearUp()", true); return; }  if (batch.completed == "true") { dwr.engine._debug("Warning: Double complete", true); return; }  // IFrame tidyup  if (batch.div) batch.div.parentNode.removeChild(batch.div);  if (batch.iframe) {    // If this is a poll frame then stop comet polling    for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) {      if (dwr.engine._outstandingIFrames[i] == batch.iframe) {        dwr.engine._outstandingIFrames.splice(i, 1);      }    }    batch.iframe.parentNode.removeChild(batch.iframe);  }  if (batch.form) batch.form.parentNode.removeChild(batch.form);  // XHR tidyup: avoid IE handles increase  if (batch.req) {    // If this is a poll frame then stop comet polling    if (batch.req == dwr.engine._pollReq) dwr.engine._pollReq = null;    delete batch.req;  }  if (batch.map && batch.map.batchId) {    delete dwr.engine._batches[batch.map.batchId];    dwr.engine._batchesLength--;  }  batch.completed = true;  // If there is anything on the queue waiting to go out, then send it.  // We don't need to check for ordered mode, here because when ordered mode  // gets turned off, we still process *waiting* batches in an ordered way.  if (dwr.engine._batchQueue.length != 0) {    var sendbatch = dwr.engine._batchQueue.shift();    dwr.engine._sendData(sendbatch);  }};/** @private Generic error handling routing to save having null checks everywhere */dwr.engine._handleError = function(batch, ex) {  if (typeof ex == "string") ex = { name:"unknown", message:ex };  if (ex.message == null) ex.message = "";  if (ex.name == null) ex.name = "unknown";  if (batch && typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex);  else if (dwr.engine._errorHandler) dwr.engine._errorHandler(ex.message, ex);  dwr.engine._clearUp(batch);};/** @private Generic error handling routing to save having null checks everywhere */dwr.engine._handleWarning = function(batch, ex) {  if (typeof ex == "string") ex = { name:"unknown", message:ex };  if (ex.message == null) ex.message = "";  if (ex.name == null) ex.name = "unknown";  if (batch && typeof batch.warningHandler == "function") batch.warningHandler(ex.message, ex);  else if (dwr.engine._warningHandler) dwr.engine._warningHandler(ex.message, ex);  dwr.engine._clearUp(batch);};/** * @private Marshall a data item * @param batch A map of variables to how they have been marshalled * @param referto An array of already marshalled variables to prevent recurrsion * @param data The data to be marshalled * @param name The name of the data being marshalled */dwr.engine._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 instanceof String) batch.map[name] = "String:" + encodeURIComponent(data);    else if (data instanceof Boolean) batch.map[name] = "Boolean:" + data;    else if (data instanceof Number) batch.map[name] = "Number:" + data;    else if (data instanceof Date) batch.map[name] = "Date:" + data.getTime();    else if (data && data.join) batch.map[name] = dwr.engine._serializeArray(batch, referto, data, name);    else batch.map[name] = dwr.engine._serializeObject(batch, referto, data, name);    break;  case "function":    // We just ignore functions.    break;  default:    dwr.engine._handleWarning(null, { name:"dwr.engine.unexpectedType", message:"Unexpected type: " + typeof data + ", attempting default converter." });    batch.map[name] = "default:" + data;    break;  }};/** @private Have we already converted this object? */dwr.engine._lookup = function(referto, data, name) {  var lookup;  // Can't use a map: getahead.org/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 */dwr.engine._serializeObject = function(batch, referto, data, name) {  var ref = dwr.engine._lookup(referto, data, name);  if (ref) return ref;  // This check for an HTML is not complete, but is there a better way?  // Maybe we should add: data.hasChildNodes typeof "function" == true  if (data.nodeName && data.nodeType) {    return dwr.engine._serializeXml(batch, referto, data, name);  }  // treat objects as an associative arrays  var reply = "Object_" + dwr.engine._getObjectClassName(data) + ":{";  var element;  for (element in data) {    if (typeof data[element] != "function") {      batch.paramCount++;      var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount;      dwr.engine._serializeAll(batch, referto, data[element], childName);      reply += encodeURIComponent(element) + ":reference:" + childName + ", ";    }  }  if (reply.substring(reply.length - 2) == ", ") {    reply = reply.substring(0, reply.length - 2);  }  reply += "}";  return reply;};/** @private Returns the classname of supplied argument obj */dwr.engine._errorClasses = { "Error":Error, "EvalError":EvalError, "RangeError":RangeError, "ReferenceError":ReferenceError, "SyntaxError":SyntaxError, "TypeError":TypeError, "URIError":URIError };dwr.engine._getObjectClassName = function(obj) {  // Try to find the classname by stringifying the object's constructor  // and extract <class> from "function <class>".  if (obj && obj.constructor && obj.constructor.toString)  {    var str = obj.constructor.toString();    var regexpmatch = str.match(/function\s+(\w+)/);    if (regexpmatch && regexpmatch.length == 2) {      return regexpmatch[1];    }  }  // Now manually test against the core Error classes, as these in some   // browsers successfully match to the wrong class in the   // Object.toString() test we will do later  if (obj && obj.constructor) {	for (var errorname in dwr.engine._errorClasses) {      if (obj.constructor == dwr.engine._errorClasses[errorname]) return errorname;    }  }  // Try to find the classname by calling Object.toString() on the object  // and extracting <class> from "[object <class>]"  if (obj) {    var str = Object.prototype.toString.call(obj);    var regexpmatch = str.match(/\[object\s+(\w+)/);    if (regexpmatch && regexpmatch.length==2) {      return regexpmatch[1];    }  }  // Supplied argument was probably not an object, but what is better?  return "Object";};/** @private Marshall an object */dwr.engine._serializeXml = function(batch, referto, data, name) {  var ref = dwr.engine._lookup(referto, data, name);  if (ref) return ref;  var output;  if (window.XMLSerializer) output = new XMLSerializer().serializeToString(data);  else if (data.toXml) output = data.toXml;  else output = data.innerHTML;  return "XML:" + encodeURIComponent(output);};/** @private Marshall an array */dwr.engine._serializeArray = function(batch, referto, data, name) {  var ref = dwr.engine._lookup(referto, data, name);  if (ref) return ref;  var reply = "Array:[";  for (var i = 0; i < data.length; i++) {    if (i != 0) reply += ",";    batch.paramCount++;    var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount;    dwr.engine._serializeAll(batch, referto, data[i], childName);    reply += "reference:";    reply += childName;  }  reply += "]";  return reply;};/** @private Convert an XML string into a DOM object. */dwr.engine._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 = dwr.engine._newActiveXObject(dwr.engine._DOMDocument);    dom.loadXML(xml); // What happens on parse fail with IE?    return dom;  }  else {    var div = document.createElement("div");    div.innerHTML = xml;    return div;  }};/** @param axarray An array of strings to attempt to create ActiveX objects from */dwr.engine._newActiveXObject = function(axarray) {  var returnValue;    for (var i = 0; i < axarray.length; i++) {    try {      returnValue = new ActiveXObject(axarray[i]);      break;    }    catch (ex) { /* ignore */ }  }  return returnValue;};/** @private Used internally when some message needs to get to the programmer */dwr.engine._debug = function(message, stacktrace) {  var written = false;  try {    if (window.console) {      if (stacktrace && window.console.trace) window.console.trace();      window.console.log(message);      written = true;    }    else if (window.opera && window.opera.postError) {      window.opera.postError(message);      written = true;    }  }  catch (ex) { /* ignore */ }  if (!written) {    var debug = document.getElementById("dwr-debug");    if (debug) {      var contents = message + "<br/>" + debug.innerHTML;      if (contents.length > 2048) contents = contents.substring(0, 2048);      debug.innerHTML = contents;    }  }};

⌨️ 快捷键说明

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