📄 engine.js
字号:
function DWREngine() { }DWREngine.setErrorHandler = function(handler) {DWREngine._errorHandler = handler;};DWREngine.setWarningHandler = function(handler) {DWREngine._warningHandler = handler;};DWREngine.setTimeout = function(timeout) {DWREngine._timeout = timeout;};DWREngine.setPreHook = function(handler) {DWREngine._preHook = handler;};DWREngine.setPostHook = function(handler) {DWREngine._postHook = handler;};DWREngine.XMLHttpRequest = 1;DWREngine.IFrame = 2;DWREngine.setMethod = function(newmethod) {if (newmethod != DWREngine.XMLHttpRequest && newmethod != DWREngine.IFrame) {DWREngine._handleError("Remoting method must be one of DWREngine.XMLHttpRequest or DWREngine.IFrame");return;}DWREngine._method = newmethod;};DWREngine.setVerb = function(verb) {if (verb != "GET" && verb != "POST") {DWREngine._handleError("Remoting verb must be one of GET or POST");return;}DWREngine._verb = verb;};DWREngine.setOrdered = function(ordered) {DWREngine._ordered = ordered;};DWREngine.setAsync = function(async) {DWREngine._async = async;};DWREngine.defaultMessageHandler = function(message) {if (typeof message == "object" && message.name == "Error" && message.description) {alert("Error: " + message.description);}else {alert(message);}};DWREngine.beginBatch = function() {if (DWREngine._batch) {DWREngine._handleError("Batch already started.");return;}DWREngine._batch = {};DWREngine._batch.map = {};DWREngine._batch.paramCount = 0;DWREngine._batch.map.callCount = 0;DWREngine._batch.ids = [];DWREngine._batch.preHooks = [];DWREngine._batch.postHooks = [];};DWREngine.endBatch = function(options) {var batch = DWREngine._batch;if (batch == null) {DWREngine._handleError("No batch in progress.");return;}if (options && options.preHook) batch.preHooks.unshift(options.preHook);if (options && options.postHook) batch.postHooks.push(options.postHook);if (DWREngine._preHook) batch.preHooks.unshift(DWREngine._preHook);if (DWREngine._postHook) batch.postHooks.push(DWREngine._postHook);if (batch.method == null) batch.method = DWREngine._method;if (batch.verb == null) batch.verb = DWREngine._verb;if (batch.async == null) batch.async = DWREngine._async;if (batch.timeout == null) batch.timeout = DWREngine._timeout;batch.completed = false;DWREngine._batch = null;if (!DWREngine._ordered) {DWREngine._sendData(batch);DWREngine._batches[DWREngine._batches.length] = batch;}else {if (DWREngine._batches.length == 0) {DWREngine._sendData(batch);DWREngine._batches[DWREngine._batches.length] = batch;}else {DWREngine._batchQueue[DWREngine._batchQueue.length] = batch;}}};DWREngine._errorHandler = DWREngine.defaultMessageHandler;DWREngine._warningHandler = DWREngine.defaultMessageHandler;DWREngine._preHook = null;DWREngine._postHook = null;DWREngine._batches = [];DWREngine._batchQueue = [];DWREngine._handlersMap = {};DWREngine._method = DWREngine.XMLHttpRequest;DWREngine._verb = "POST";DWREngine._ordered = false;DWREngine._async = true;DWREngine._batch = null;DWREngine._timeout = 0;DWREngine._DOMDocument = ["Msxml2.DOMDocument.5.0", "Msxml2.DOMDocument.4.0", "Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM"];DWREngine._XMLHTTP = ["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];DWREngine._execute = function(path, scriptName, methodName, vararg_params) {var singleShot = false;if (DWREngine._batch == null) {DWREngine.beginBatch();singleShot = true;}var args = [];for (var i = 0; i < arguments.length - 3; i++) {args[i] = arguments[i + 3];}if (DWREngine._batch.path == null) {DWREngine._batch.path = path;}else {if (DWREngine._batch.path != path) {DWREngine._handleError("Can't batch requests to multiple DWR Servlets.");return;}}var params;var callData;var firstArg = args[0];var lastArg = args[args.length - 1];if (typeof firstArg == "function") {callData = { callback:args.shift() };params = args;}else if (typeof lastArg == "function") {callData = { callback:args.pop() };params = args;}else if (typeof lastArg == "object" && lastArg.callback != null && typeof lastArg.callback == "function") {callData = args.pop();params = args;}else if (firstArg == null) {if (lastArg == null && args.length > 2) {if (DWREngine._warningHandler) {DWREngine._warningHandler("Ambiguous nulls at start and end of parameter list. Which is the callback function?");}}callData = { callback:args.shift() };params = args;}else if (lastArg == null) {callData = { callback:args.pop() };params = args;}else {if (DWREngine._warningHandler) {DWREngine._warningHandler("Missing callback function or metadata object.");}return;}var random = Math.floor(Math.random() * 10001);var id = (random + "_" + new Date().getTime()).toString();var prefix = "c" + DWREngine._batch.map.callCount + "-";DWREngine._batch.ids.push(id);if (callData.method != null) {DWREngine._batch.method = callData.method;delete callData.method;}if (callData.verb != null) {DWREngine._batch.verb = callData.verb;delete callData.verb;}if (callData.async != null) {DWREngine._batch.async = callData.async;delete callData.async;}if (callData.timeout != null) {DWREngine._batch.timeout = callData.timeout;delete callData.timeout;}if (callData.preHook != null) {DWREngine._batch.preHooks.unshift(callData.preHook);delete callData.preHook;}if (callData.postHook != null) {DWREngine._batch.postHooks.push(callData.postHook);delete callData.postHook;}if (callData.errorHandler == null) callData.errorHandler = DWREngine._errorHandler;if (callData.warningHandler == null) callData.warningHandler = DWREngine._warningHandler;DWREngine._handlersMap[id] = callData;DWREngine._batch.map[prefix + "scriptName"] = scriptName;DWREngine._batch.map[prefix + "methodName"] = methodName;DWREngine._batch.map[prefix + "id"] = id;DWREngine._addSerializeFunctions();for (i = 0; i < params.length; i++) {DWREngine._serializeAll(DWREngine._batch, [], params[i], prefix + "param" + i);}DWREngine._removeSerializeFunctions();DWREngine._batch.map.callCount++;if (singleShot) {DWREngine.endBatch();}};DWREngine._sendData = function(batch) {if (batch.map.callCount == 0) return;for (var i = 0; i < batch.preHooks.length; i++) {batch.preHooks[i]();}batch.preHooks = null;if (batch.timeout && batch.timeout != 0) {batch.interval = setInterval(function() {clearInterval(batch.interval);DWREngine._abortRequest(batch);}, batch.timeout);}var statsInfo;if (batch.map.callCount == 1) {statsInfo = batch.map["c0-scriptName"] + "." + batch.map["c0-methodName"] + ".dwr";}else {statsInfo = "Multiple." + batch.map.callCount + ".dwr";}if (batch.method == DWREngine.XMLHttpRequest) {if (window.XMLHttpRequest) {batch.req = new XMLHttpRequest();}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";if (batch.async) {batch.req.onreadystatechange = function() {DWREngine._stateChange(batch);};}var indexSafari = navigator.userAgent.indexOf('Safari/');if (indexSafari >= 0) {var version = navigator.userAgent.substring(indexSafari + 7);var verNum = parseInt(version, 10);if (verNum < 400) {batch.verb == "GET";}}if (batch.verb == "GET") {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 {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"];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();}}};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;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -