Repository: tapestry-5 Updated Branches: refs/heads/master 6f827cb98 -> b97d9aa36
TAP5-1866: stop the ZoneRefresh timer if a Zone if removed from the DOM Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/b97d9aa3 Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/b97d9aa3 Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/b97d9aa3 Branch: refs/heads/master Commit: b97d9aa36a7c4826a329ebad7ca44a4067a48de9 Parents: 6f827cb Author: Jochen Kemnade <[email protected]> Authored: Thu May 1 12:32:27 2014 +0200 Committer: Jochen Kemnade <[email protected]> Committed: Thu May 1 12:32:27 2014 +0200 ---------------------------------------------------------------------- .../META-INF/modules/t5/core/zone-refresh.coffee | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/b97d9aa3/tapestry-core/src/main/coffeescript/META-INF/modules/t5/core/zone-refresh.coffee ---------------------------------------------------------------------- diff --git a/tapestry-core/src/main/coffeescript/META-INF/modules/t5/core/zone-refresh.coffee b/tapestry-core/src/main/coffeescript/META-INF/modules/t5/core/zone-refresh.coffee index 82c8488..4fb960f 100644 --- a/tapestry-core/src/main/coffeescript/META-INF/modules/t5/core/zone-refresh.coffee +++ b/tapestry-core/src/main/coffeescript/META-INF/modules/t5/core/zone-refresh.coffee @@ -36,10 +36,21 @@ define ["./events", "./dom", "./console"], zone.on events.zone.didUpdate, -> executing = false + cleanUp = -> + window.clearInterval intervalId + zone = null + handler = -> # Don't clog things up if the response rate is too slow return if executing + # If the zone element is no longer part of the DOM, stop the + # timer + + unless (zone.closest 'body') + cleanUp() + return + # Set the flag now, it will clear when the zone updates. executing = true @@ -48,8 +59,7 @@ define ["./events", "./dom", "./console"], intervalId = window.setInterval handler, period * 1000 # Not sure if this is needed except for IE: - (dom window).on "beforeunload", -> - window.clearInterval intervalId + (dom window).on "beforeunload", cleanUp # export the single function: return initialize
