📄 xoad.js
字号:
try { xmlHttp.setRequestHeader('Content-Length', requestBody.length); xmlHttp.setRequestHeader('Content-Type', 'text/plain; charset=UTF-8'); xmlHttp.setRequestHeader('Accept-Charset', 'UTF-8'); } catch (e) {} if (methodCallback != null) { xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4) { var response = requestCompleted(); if (typeof(response.returnValue) != 'undefined') { methodCallback(response.returnValue); } } } } if (callTimeout != null) { eval('xoad.callbacks.table.call' + callId + ' = {}'); eval('xoad.callbacks.table.call' + callId + '.timeout = false'); eval('xoad.callbacks.table.call' + callId + '.source = obj'); eval('xoad.callbacks.table.call' + callId + '.id = ' + 'window.setTimeout(\'xoad.callbacks.table.call' + callId + '.timeout = true; ' + 'xoad.throwException(xoad.getError(XOAD_ERROR_TIMEOUT, "Timeout."), [xoad.callbacks.table.call' + callId + '.source, "' + method + '"]);\', callTimeout)'); } xmlHttp.send(requestBody); if (methodCallback == null) { var response = requestCompleted(); if (typeof(response.returnValue) != 'undefined') { return response.returnValue; } return null; } else { callResult = new xoad.callSuspender(); return callResult; }};xoad.catchEvent = function(obj, eventArguments){ if (eventArguments.length < 2) { eventArguments[1] = null; } var eventData = { listener : obj, event : eventArguments[0], filter : eventArguments[1] }; xoad.events.table[xoad.events.table.length] = eventData; xoad.events.tableLength ++; if (xoad.events.status < 1) { xoad.events.status = 1; window.setTimeout('xoad.dispatchEvents()', xoad.events.startInterval); } return true;};xoad.ignoreEvent = function(obj, eventArguments){ if (xoad.events.tableLength < 1) { return false; } if (eventArguments.length < 2) { eventArguments[1] = null; } for (var iterator = xoad.events.table.length - 1; iterator >= 0; iterator --) { var event = xoad.events.table[iterator]; if ( (event.listener.__uid == obj.__uid) && (event.event == eventArguments[0]) && (event.filter == eventArguments[1])) { xoad.events.table[iterator] = null; xoad.events.tableLength --; break; } } return true;};xoad.queueDispatchEvents = function(time){ if (typeof(time) == 'undefined') { time = xoad.events.refreshInterval; } window.setTimeout('xoad.dispatchEvents()', time);};xoad.dispatchEvents = function(){ if (xoad.events.tableLength < 1) { xoad.events.status = 0; return false; } if ( (typeof(xoad.events.callbackUrl) != 'string') || (typeof(xoad.events.lastRefresh) != 'number')) { xoad.events.status = 0; return false; } xoad.events.status = 1; var eventsData = []; for (var iterator = 0; iterator < xoad.events.table.length; iterator ++) { var event = xoad.events.table[iterator]; if (event != null) { eventsData[eventsData.length] = { className : event.listener.__class, event : event.event, filter : event.filter }; } } var xmlHttp = xoad.getXmlHttp(); var requestBody = xoad.serialize({ eventsCallback : true, time : xoad.events.lastRefresh, data : eventsData }); var url = xoad.events.callbackUrl; if (url.indexOf('?') < 0) { url += '?'; } else { url += '&'; } url += 'xoadCall=true'; xmlHttp.open('POST', url, true); var callId = xoad.callbacks.count ++; var requestCompleted = function() { if (eval('xoad.callbacks.table.call' + callId + '.timeout')) { return false; } eval('window.clearTimeout(xoad.callbacks.table.call' + callId + '.id)'); eval('xoad.callbacks.table.call' + callId + ' = null'); if (xmlHttp.status != 200) { xoad.queueDispatchEvents(); return false; } else { if (xmlHttp.responseText == null) { xoad.queueDispatchEvents(); return false; } if (xmlHttp.responseText.length < 1) { xoad.queueDispatchEvents(); return false; } try { eval('var xoadResponse = ' + xmlHttp.responseText + ';'); } catch(e) { xoad.queueDispatchEvents(); return false; } if (typeof(xoadResponse) != 'object') { xoad.queueDispatchEvents(); return false; } if (xoad.notifyObservers('dispatchEventsCompleted', xoadResponse)) { for (var serverIterator = 0; serverIterator < xoadResponse.result.length; serverIterator ++) { var serverEvent = xoadResponse.result[serverIterator]; for (var clientIterator = 0; clientIterator < xoad.events.table.length; clientIterator ++) { var clientEvent = xoad.events.table[clientIterator]; if (clientEvent != null) { if ( (serverEvent.event == clientEvent.event) && (serverEvent.className.toLowerCase() == clientEvent.listener.__class.toLowerCase()) && (serverEvent.filter == clientEvent.filter)) { eval('if (typeof(clientEvent.listener.' + clientEvent.event + ') == "function") { ' + 'clientEvent.listener.' + clientEvent.event + '(serverEvent.eventData.sender, serverEvent.eventData.data) }'); } } } if (serverEvent.time > xoad.events.lastRefresh) { xoad.events.lastRefresh = serverEvent.time; } } xoad.queueDispatchEvents(); return true; } } return false; }; try { xmlHttp.setRequestHeader('Content-Length', requestBody.length); xmlHttp.setRequestHeader('Content-Type', 'text/plain; charset=UTF-8'); xmlHttp.setRequestHeader('Accept-Charset', 'UTF-8'); } catch (e) {} xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4) { xoad.events.status = 3; requestCompleted(); xoad.events.status = 1; } }; eval('xoad.callbacks.table.call' + callId + ' = {}'); eval('xoad.callbacks.table.call' + callId + '.timeout = false'); eval('xoad.callbacks.table.call' + callId + '.id = ' + 'window.setTimeout(\'xoad.callbacks.table.call' + callId + '.timeout = true; ' + 'xoad.queueDispatchEvents();\', xoad.events.timeout)'); xoad.events.status = 2; xmlHttp.send(requestBody); return true;};xoad.queuePostEvent = function(eventId){ if (typeof(xoad.events.postTable[eventId]) == 'object') { xoad.postEvent(xoad.events.postTable[eventId].sender, [ xoad.events.postTable[eventId].event, xoad.events.postTable[eventId].data, xoad.events.postTable[eventId].filter, eventId]); }};xoad.postEvent = function(obj, eventArguments){ if (typeof(xoad.events.callbackUrl) != 'string') { return false; } var eventName = eventArguments[0]; var eventData = (eventArguments.length > 1) ? eventArguments[1] : null; var eventFilter = (eventArguments.length > 2) ? eventArguments[2] : null; var eventId = (eventArguments.length > 3) ? eventArguments[3] : xoad.events.postTable.length; xoad.events.postTable[eventId] = { sender : obj, event : eventName, data : eventData, filter : eventFilter }; var xmlHttp = xoad.getXmlHttp(); var requestBody = xoad.serialize({ eventPost : true, className : obj.__class, sender : xoad.serialize(obj), event : eventName, data : eventData, filter : eventFilter }); var url = xoad.events.callbackUrl; if (url.indexOf('?') < 0) { url += '?'; } else { url += '&'; } url += 'xoadCall=true'; xmlHttp.open('POST', url, true); var requestCompleted = function() { if (xmlHttp.status != 200) { xoad.queuePostEvent(eventId); return false; } else { if (xmlHttp.responseText == null) { xoad.queuePostEvent(eventId); return false; } if (xmlHttp.responseText.length < 1) { xoad.queuePostEvent(eventId); return false; } try { eval('var xoadResponse = ' + xmlHttp.responseText + ';'); } catch(e) { xoad.queuePostEvent(eventId); return false; } if (typeof(xoadResponse) != 'object') { xoad.queuePostEvent(eventId); return false; } if (xoadResponse.status != true) { xoad.queuePostEvent(eventId); return false; } if (xoad.notifyObservers('postEventCompleted', xoadResponse)) { xoad.events.postTable[eventId] = null; return true; } } return false; }; try { xmlHttp.setRequestHeader('Content-Length', requestBody.length); xmlHttp.setRequestHeader('Content-Type', 'text/plain; charset=UTF-8'); xmlHttp.setRequestHeader('Accept-Charset', 'UTF-8'); } catch (e) {} xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4) { requestCompleted(); } }; xmlHttp.send(requestBody); return true;};xoad.addObserver = function(observer){ xoad.observers[xoad.observers.length] = observer; return true;};xoad.notifyObservers = function(event){ if (xoad.observers.length < 1) { return true; } var eventMethod = 'on' + event.charAt(0).toUpperCase() + event.substr(1); var notifyArguments = []; var iterator = 0; for (iterator = 1; iterator < arguments.length; iterator ++) { notifyArguments[notifyArguments.length] = arguments[iterator]; } for (iterator = 0; iterator < xoad.observers.length; iterator ++) { xoad.invokeMethod(xoad.observers[iterator], eventMethod, notifyArguments); } return true;};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -