diff options
Diffstat (limited to 'src/Browser.js')
| -rw-r--r-- | src/Browser.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/Browser.js b/src/Browser.js new file mode 100644 index 00000000..bdf57386 --- /dev/null +++ b/src/Browser.js @@ -0,0 +1,46 @@ + +////////////////////////////// +// Browser +////////////////////////////// + +function Browser(location) { + this.location = location; + this.delay = 25; + this.setTimeout = function(fn, delay) { + window.setTimeout(fn, delay); + }; + this.expectedUrl = location.href; + this.listeners = []; +} + +Browser.prototype = { + watchUrl: function(fn){ + this.listeners.push(fn); + }, + + startUrlWatcher: function() { + var self = this; + (function pull () { + if (self.expectedUrl !== self.location.href) { + foreach(self.listeners, function(listener){ + listener(self.location.href); + }); + self.expectedUrl = self.location.href; + } + self.setTimeout(pull, self.delay); + })(); + }, + + setUrl: function(url) { + var existingURL = this.location.href; + if (!existingURL.match(/#/)) + existingURL += '#'; + if (existingURL != url) + this.location.href = url; + this.existingURL = url; + }, + + getUrl: function() { + return this.location.href; + } +}; |
