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