Index: liveglue.js =================================================================== --- liveglue.js (revision 1557) +++ liveglue.js (working copy) @@ -32,6 +32,10 @@ connect(outputNum + 1) } } else { + for (var i in disconnectListeners) { + disconnectListeners[i]() + disconnectListeners = [] + } last_request = null } } @@ -108,7 +112,22 @@ } } +var disconnectListeners = [] +function addDisconnectListener(callback) { + disconnectListeners.push(callback) + return callback +} + +function delDisconnectListener(theListener) { + for (var i in disconnectListeners) { + if (disconnectListeners[i] == theListener){ + disconnectListeners.splice(i, 1) + break + } + } +} + function nevow_clientToServerEvent(theTarget, evalAfterDone) { if (theTarget != 'close' && liveevil_unload) { // Server had previously closed the output; let's open it again.