From 50076b571da522cf6d2cb92c28519694727e9c31 Mon Sep 17 00:00:00 2001 From: Vojta Jina Date: Tue, 31 May 2011 22:52:44 +0200 Subject: Fix hashchange event on IE8 compatibility mode Stupid IE8 in compatibility mode or in IE7 mode returns true for `('onhashchange' in window)`, but does not support hashchange event. Closes #353 --- test/BrowserSpecs.js | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/BrowserSpecs.js b/test/BrowserSpecs.js index 635909a7..e01506dc 100644 --- a/test/BrowserSpecs.js +++ b/test/BrowserSpecs.js @@ -418,7 +418,10 @@ describe('browser', function(){ it('should use $browser poller to detect url changes when onhashchange event is unsupported', function() { - fakeWindow = {location: {href:"http://server"}}; + fakeWindow = { + location: {href:"http://server"}, + document: {} + }; browser = new Browser(fakeWindow, {}, {}); @@ -455,7 +458,8 @@ describe('browser', function(){ onHashChngListener = listener; }, removeEventListener: angular.noop, - detachEvent: angular.noop + detachEvent: angular.noop, + document: {} }; fakeWindow.onhashchange = true; @@ -479,5 +483,24 @@ describe('browser', function(){ jqLite(fakeWindow).dealoc(); } }); + + // asynchronous test + it('should fire onHashChange when location.hash change', function() { + var callback = jasmine.createSpy('onHashChange'); + browser = new Browser(window, {}, {}); + browser.onHashChange(callback); + + window.location.hash = 'new-hash'; + browser.startPoller(100, setTimeout); + + waitsFor(function() { + return callback.callCount; + }, 'onHashChange callback to be called', 1000); + + runs(function() { + if (!jQuery) jqLite(window).dealoc(); + window.location.hash = ''; + }); + }); }); }); -- cgit v1.2.3