From 120701b9d9ebdd9352c7fca2b8a381597a808362 Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Fri, 27 May 2011 20:49:57 -0700 Subject: fix($browser.setUrl): make browser.setUrl more efficient - browser should remember the last value retrieved via browser.getUrl - browser should update window.location only if the new value is different from the current window.location value --- src/Browser.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/Browser.js') diff --git a/src/Browser.js b/src/Browser.js index 3e120e5b..55b65471 100644 --- a/src/Browser.js +++ b/src/Browser.js @@ -39,7 +39,8 @@ function Browser(window, document, body, XHR, $log) { var self = this, rawDocument = document[0], location = window.location, - setTimeout = window.setTimeout; + setTimeout = window.setTimeout, + lastLocationUrl; self.isMock = false; @@ -201,10 +202,13 @@ function Browser(window, document, body, XHR, $log) { * Sets browser's url */ self.setUrl = function(url) { - var existingURL = location.href; + + var existingURL = lastLocationUrl; if (!existingURL.match(/#/)) existingURL += '#'; if (!url.match(/#/)) url += '#'; - location.href = url; + if (existingURL != url) { + location.href = url; + } }; /** @@ -219,7 +223,7 @@ function Browser(window, document, body, XHR, $log) { * @returns {string} Browser's url */ self.getUrl = function() { - return location.href; + return lastLocationUrl = location.href; }; -- cgit v1.2.3