I'm thinking that there are 4 types of "unroutables":
- external host/port
- external path (outside app root)
- ignored route (can.route.ignore)
- unrouted path
What do you guys think of this as an API?:
- /*
- @param {Event} event
- @param {Object} data Contains route information.
- @param {URLUtils} url
- */
- can.route.bind("unroutable", function(event, data, url)
- {
- var loc = window.location;
- if (url.host != loc.host || url.port != loc.port || url.protocol != loc.protocol)
- {
- // different host/port
- }
- else if (url.pathname.indexOf(can.route.bindings.pushstate.root) != 0)
- {
- // external path (outside app root)
- }
- else if (data.route === false)
- {
- // ignored route
- }
- else if ( can.isEmptyObject(data.route) )
- {
- // unrouted (simulated 404?)
- }
- // stops links from refreshing the page (for whatever reason)
- if (event.currentTarget.tagName == "A")
- {
- event.preventDefault();
- }
- });