- Davis is no longer dependent on jQuery, can be used with any or no DOM library with the use of extensions.
- Added Zepto extension to allow Davis to be used with Zepto.
- More robust checking of link origins, protocols must match to be caught by Davis, thanks jacobcoens
- Added Mixpanel plugin, thanks hleinone
- Added Facebook Like plugin, thanks hleinone
- Fixed several bugs with the hashRouting extension.
- Refactor of internals, many components now implemented as Davis plugins, making it easier to extend the library.
- Simplify build tools, removed dependencies on ruby and java. Now all you need is make and node.js. Thanks visionmedia.
- The
Davis
convenience function no longer requires a config function to be passed in when creating an app. visionmedia - The
Davis
convenience function auto starts the app as soon as possible. visionmedia. - Changed default setting
generateRequestOnPageLoad
, now it is false by default. Davis.logger
is now implemented as a plugin not a setting.- Renamed
Davis.Request.prototype.asJSON
toDavis.Request.prototype.toJSON
. visionmedia. - Fix browser inconsistency bug where Firefox would not fire a popstate event on page load.
- Normalise node name when checking link and form origins, fixes bug when used in xhtml documents. Reported by sabberworm.
- Fix issue when submitting forms with only file inputs or with no inputs. Reported by hleinone.
- Ignore any links or forms that are not on the same origin, only listen to clicks on links and forms with a href or action from the same domain.
- Big upgrade to the hashRouting extension, adding fallback for browsers that don't support
onhashchange
& the ability to fallback to hash based routing in browsers that do not support pushState. Many thanks to jbaudanza. - Fix bug in Davis.Request so that full urls are handled properly, jbaudanza.
- Fix bug when parsing rails style nested params with arrays, thanks ismasan.
- Creating instances of Davis.Request should be more robust, fixes issues seen in some versions of Chrome.
- State data is pushed into the history state object under a
_davis
prefix to defend against any possible clashes with other code manipulating the history. - Add extension to disable Davis support in iOS versions less than 5.
- Fixes required for Opera support now that Opera 11.50 supports pushState.
- Ensure that jQuery is never referenced as $.
- Introduce Davis.location object which acts as an interface to any kind of routing mechanism. Expects to be passed a delegate object which will do the actual routing work. By default the delegate is the HTML5 pushState module Davis.history.
- Renamed methods on Davis.history to match the interface set out by Davis.location.
Davis.history.pushState
becomesDavis.history.assign
&Davis.history.replaceState
becomesDavis.history.replace
. - Added
Davis.extend
method for adding library level extensions. - Added Davis.hashRouting extension allowing use of location.hash based routing.
- Changed
Davis.App.prototype.configure
so that the settings object is yielded as the first argument to the config function.
- Merge pull request fixes issues with IE's console functions/objects and IE's handling of lastIndex, thanks to jbaudanza.
- Fixed bug by introducing a utils module which uses native implementations of
Array.prototype.every
,Array.prototype.forEach
,Array.prototype.filter
,Array.prototype.map
if they exist and if not falls back to a non native implementation. This allows Davis.js to fail gracefully in IE. Thanks to to jbaudanza for reporting the issue.
- If no route is found for the initial page load request don't stop the app
- Log a message when the app is stopped
- Only get requests should change the browser url, all others will create an entry in the history but not change the url
- By default any routes not handled by Davis will be automatically sent to the server. This can be configured using the setting
handleRouteNotFound
- Request methods and paths are now case insensitive
- Fixed bug which meant that restarting a Davis app would lead to events being bound to twice
- Work when jQuery is in no conflict mode
- Fixed bug which caused the initial page load to trigger two requests.
- Made the initial request for the page load configurable, by default it is on.
- fixed bug with
request.redirect
so that the browser url is set correctly.
- Added
app.use
to use plugins in a Davis.App - Added
app.helpers
to add helper methods to a Davis.Request object, available with a route callback. - Created a Davis.title plugin, a simple plugin to set the page title for each request.
- Created a Davis.google_analytics plugin, a simple plugin to enable google analytics tracking of requests.
- Can now throw errors that happen in a route callback, this is disabled by default but can be enabled using
app.settings.throwErrors
. When disabled an http request is made to the server. - Add
routeError
event, triggered when an error occurs in a route callback.
request.whenStale
callback should receive the new request as a param and have this bound to the new request.
- Add
app.state
andapp.trans
to allow for routes that do not change the page url bar but are still navigable via the back and forward button. - Add
request.whenStale
callback, called whenever a route becomes stale, i.e. when another route has been triggered by a new request. - Fail more gracefully when
pushState
is not available cmalvern - Trigger 'unsupported' event when running in a browser that is unsupported