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

📄 engine.js

📁 动态增加表格和横向导航栏
💻 JS
📖 第 1 页 / 共 3 页
字号:
  // Now we have finished remembering the call, we incr the call count  DWREngine._batch.map.callCount++;  if (singleShot) {    DWREngine.endBatch();  }};/** * @private Actually send the block of data in the batch object. */DWREngine._sendData = function(batch) {  // If the batch is empty, don't send anything  if (batch.map.callCount == 0) return;  // Call any pre-hooks  for (var i = 0; i < batch.preHooks.length; i++) {    batch.preHooks[i]();  }  batch.preHooks = null;  // Set a timeout  if (batch.timeout && batch.timeout != 0) {    batch.interval = setInterval(function() {      clearInterval(batch.interval);      DWREngine._abortRequest(batch);    }, batch.timeout);  }  // A quick string to help people that use web log analysers  var statsInfo;  if (batch.map.callCount == 1) {    statsInfo = batch.map["c0-scriptName"] + "." + batch.map["c0-methodName"] + ".dwr";  }  else {    statsInfo = "Multiple." + batch.map.callCount + ".dwr";  }  // Get setup for XMLHttpRequest if possible  if (batch.method == DWREngine.XMLHttpRequest) {    if (window.XMLHttpRequest) {      batch.req = new XMLHttpRequest();    }    // IE5 for the mac claims to support window.ActiveXObject, but throws an error when it's used    else if (window.ActiveXObject && !(navigator.userAgent.indexOf('Mac') >= 0 && navigator.userAgent.indexOf("MSIE") >= 0)) {      batch.req = DWREngine._newActiveXObject(DWREngine._XMLHTTP);    }  }  var query = "";  var prop;  if (batch.req) {    batch.map.xml = "true";    // Proceed using XMLHttpRequest    if (batch.async) {      batch.req.onreadystatechange = function() {        DWREngine._stateChange(batch);      };    }    // Workaround for Safari 1.x POST bug    var indexSafari = navigator.userAgent.indexOf('Safari/');    if (indexSafari >= 0) {      // So this is Safari, are we on 1.x? POST is broken      var version = navigator.userAgent.substring(indexSafari + 7);      var verNum = parseInt(version, 10);      if (verNum < 400) {        batch.verb == "GET";      }      // else if (verNum <= 417) {      //   batch.map.isBrokenSafari2 = "true";      // }    }    if (batch.verb == "GET") {      // Some browsers (Opera/Safari2) seem to fail to convert the value      // of batch.map.callCount to a string in the loop below so we do it      // manually here.      batch.map.callCount = "" + batch.map.callCount;      for (prop in batch.map) {        var qkey = encodeURIComponent(prop);        var qval = encodeURIComponent(batch.map[prop]);        if (qval == "") {          if (DWREngine._warningHandler) {            DWREngine._warningHandler("Found empty qval for qkey=" + qkey);          }        }        query += qkey + "=" + qval + "&";      }      query = query.substring(0, query.length - 1);      try {        batch.req.open("GET", batch.path + "/exec/" + statsInfo + "?" + query, batch.async);        batch.req.send(null);        if (!batch.async) {          DWREngine._stateChange(batch);        }      }      catch (ex) {        DWREngine._handleMetaDataError(null, ex);      }    }    else {      for (prop in batch.map) {        if (typeof batch.map[prop] != "function") {          query += prop + "=" + batch.map[prop] + "\n";        }      }      try {        // This might include Safari too, but it shouldn't do any harm        //   if (navigator.userAgent.indexOf('Gecko') >= 0) {        //     batch.req.setRequestHeader('Connection', 'close');        //   }        batch.req.open("POST", batch.path + "/exec/" + statsInfo, batch.async);        batch.req.setRequestHeader('Content-Type', 'text/plain');        batch.req.send(query);        if (!batch.async) {          DWREngine._stateChange(batch);        }      }      catch (ex) {        DWREngine._handleMetaDataError(null, ex);      }    }  }  else {    batch.map.xml = "false";    var idname = "dwr-if-" + batch.map["c0-id"];    // Proceed using iframe    batch.div = document.createElement('div');    batch.div.innerHTML = "<iframe frameborder='0' width='0' height='0' id='" + idname + "' name='" + idname + "'></iframe>";    document.body.appendChild(batch.div);    batch.iframe = document.getElementById(idname);    batch.iframe.setAttribute('style', 'width:0px; height:0px; border:0px;');    if (batch.verb == "GET") {      for (prop in batch.map) {        if (typeof batch.map[prop] != "function") {          query += encodeURIComponent(prop) + "=" + encodeURIComponent(batch.map[prop]) + "&";        }      }      query = query.substring(0, query.length - 1);      batch.iframe.setAttribute('src', batch.path + "/exec/" + statsInfo + "?" + query);      document.body.appendChild(batch.iframe);    }    else {      batch.form = document.createElement('form');      batch.form.setAttribute('id', 'dwr-form');      batch.form.setAttribute('action', batch.path + "/exec" + statsInfo);      batch.form.setAttribute('target', idname);      batch.form.target = idname;      batch.form.setAttribute('method', 'post');      for (prop in batch.map) {        var formInput = document.createElement('input');        formInput.setAttribute('type', 'hidden');        formInput.setAttribute('name', prop);        formInput.setAttribute('value', batch.map[prop]);        batch.form.appendChild(formInput);      }      document.body.appendChild(batch.form);      batch.form.submit();    }  }};/** * @private Called by XMLHttpRequest to indicate that something has happened */DWREngine._stateChange = function(batch) {  if (!batch.completed && batch.req.readyState == 4) {    try {      var reply = batch.req.responseText;      var status = batch.req.status;      if (reply == null || reply == "") {        DWREngine._handleMetaDataError(null, "No data received from server");        return;      }      // This should get us out of 404s etc.      if (reply.search("DWREngine._handle") == -1) {        DWREngine._handleMetaDataError(null, "Invalid reply from server");        return;      }      if (status != 200) {        if (reply == null) reply = "Unknown error occured";        DWREngine._handleMetaDataError(null, reply);        return;      }      eval(reply);      // We're done. Clear up      DWREngine._clearUp(batch);    }    catch (ex) {      if (ex == null) ex = "Unknown error occured";      DWREngine._handleMetaDataError(null, ex);    }    finally {      // 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 (DWREngine._batchQueue.length != 0) {        var sendbatch = DWREngine._batchQueue.shift();        DWREngine._sendData(sendbatch);        DWREngine._batches[DWREngine._batches.length] = sendbatch;      }    }  }};/** * @private Called by reply scripts generated as a result of remote requests * @param id The identifier of the call that we are handling a response for * @param reply The data to pass to the callback function */DWREngine._handleResponse = function(id, reply) {  // Clear this callback out of the list - we don't need it any more  var handlers = DWREngine._handlersMap[id];  DWREngine._handlersMap[id] = null;  // TODO: How can we do this - delete DWREngine._handlersMap.id  if (handlers) {    // Error handlers inside here indicate an error that is nothing to do    // with DWR so we handle them differently.    try {      if (handlers.callback) handlers.callback(reply);    }    catch (ex) {      DWREngine._handleMetaDataError(handlers, ex);    }  }  // Finalize the call for IFrame transport   if (DWREngine._method == DWREngine.IFrame) {    var responseBatch = DWREngine._batches[DWREngine._batches.length-1];	    // Only finalize after the last call has been handled    if (responseBatch.map["c"+(responseBatch.map.callCount-1)+"-id"] == id) {      DWREngine._clearUp(responseBatch);    }  }};/** * @private This method is called by Javascript that is emitted by server */DWREngine._handleServerError = function(id, error) {  // Clear this callback out of the list - we don't need it any more  var handlers = DWREngine._handlersMap[id];  DWREngine._handlersMap[id] = null;  if (error.message) {    DWREngine._handleMetaDataError(handlers, error.message, error);  }  else {    DWREngine._handleMetaDataError(handlers, error);  }};/** * @private Called as a result of a request timeout */ DWREngine._abortRequest = function(batch) {  if (batch && batch.metadata != null && !batch.completed) {    DWREngine._clearUp(batch);    if (batch.req) batch.req.abort();    // Call all the timeout errorHandlers    var handlers;    var id;    for (var i = 0; i < batch.ids.length; i++) {      id = batch.ids[i];      handlers = DWREngine._handlersMap[id];      DWREngine._handleMetaDataError(handlers, "Timeout");    }  }};/** * @private A call has finished by whatever means and we need to shut it all down. */DWREngine._clearUp = function(batch) {  if (batch.completed) {    alert("double complete");    return;  }  // IFrame tidyup  if (batch.div) batch.div.parentNode.removeChild(batch.div);  if (batch.iframe) batch.iframe.parentNode.removeChild(batch.iframe);  if (batch.form) batch.form.parentNode.removeChild(batch.form);  // XHR tidyup: avoid IE handles increase  if (batch.req) delete batch.req;  for (var i = 0; i < batch.postHooks.length; i++) {    batch.postHooks[i]();  }  batch.postHooks = null;  // TODO: There must be a better way???  for (var i = 0; i < DWREngine._batches.length; i++) {    if (DWREngine._batches[i] == batch) {      DWREngine._batches.splice(i, 1);      break;    }  }  batch.completed = true;};/** * @private Generic error handling routing to save having null checks everywhere. */DWREngine._handleError = function(reason, ex) {  if (DWREngine._errorHandler) {    DWREngine._errorHandler(reason, ex);  }};/** * @private Generic error handling routing to save having null checks everywhere. */DWREngine._handleMetaDataError = function(handlers, reason, ex) {  if (handlers && typeof handlers.errorHandler == "function") {    handlers.errorHandler(reason, ex);  }  else {    DWREngine._handleError(reason, ex);  }};/** * @private Hack a polymorphic dwrSerialize() function on all basic types. Yeulch */DWREngine._addSerializeFunctions = function() {  Object.prototype.dwrSerialize = DWREngine._serializeObject;  Array.prototype.dwrSerialize = DWREngine._serializeArray;  Boolean.prototype.dwrSerialize = DWREngine._serializeBoolean;  Number.prototype.dwrSerialize = DWREngine._serializeNumber;  String.prototype.dwrSerialize = DWREngine._serializeString;  Date.prototype.dwrSerialize = DWREngine._serializeDate;};/** * @private Remove the hacked polymorphic dwrSerialize() function on all basic types. */DWREngine._removeSerializeFunctions = function() {  delete Object.prototype.dwrSerialize;  delete Array.prototype.dwrSerialize;  delete Boolean.prototype.dwrSerialize;  delete Number.prototype.dwrSerialize;  delete String.prototype.dwrSerialize;  delete Date.prototype.dwrSerialize;};/** * @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

⌨️ 快捷键说明

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