             @sockets = (s for s in @sockets when s != socket)
 
     processEvent : (args ) =>
-        @broadcastEvent 'pauseRendering'
-        @events.processEvent(args)
-        @broadcastEvent 'resumeRendering'
+        if !@browserLoading
+            @broadcastEvent 'pauseRendering'
+            @events.processEvent(args)
+            @broadcastEvent 'resumeRendering'
 
     processClientSetAttribute : (args) =>
-        target = @nodes.get(args.target)
-        {attribute, value} = args
-        if attribute == 'src'
-            return
-        if attribute == 'selectedIndex'
-            return target[attribute] = value
-        target.setAttribute(attribute, value)
+        if !@browserLoading
+            target = @nodes.get(args.target)
+            {attribute, value} = args
+            if attribute == 'src'
+                return
+            if attribute == 'selectedIndex'
+                return target[attribute] = value
+            target.setAttribute(attribute, value)
 
 # The BrowserServer constructor iterates over the properties in this object and
 # adds an event handler to the Browser for each one.  The function name must

        @nodes = new TaggedNodeCollection()
        @events = new EventProcessor(this)

        for own event, handler of DOMEventHandlers
            do (event, handler) =>
                @browser.on event, () =>

    ExitedTimer : () ->
        @broadcastEvent 'resumeRendering'

    PageLoading : () ->
        @browserLoading = true

    PageLoaded : () ->
        @browserLoading = false
        cmds = serialize(@browser.window.document, @browser.resources)
        events = @events.getSnapshot()
        components = @browser.getSnapshot().components
        for socket in @sockets
            socket.emit 'loadFromSnapshot'
                nodes      : cmds
                events     : events
                components : components

module.exports = BrowserServer
