       if @pushStateSupport
         history.pushState({ }, document.title, href)
       else
-        window.location.hash = "!" + href
+        if @hashchangeSupport
+          window.location.hash = "!" + href
 
   addListener: (element, event, fn) =>
     if element.addEventListener  # W3C DOM

      if window.location.hash.substring(0, 2) == "#!" && @find(window.location.hash.substring(2))
        forceUrlUpdate = initialUrl = window.location.hash.substring(2)
    else
      if window.location.hash == "" && @find(initialUrl)
        if @hashBaseUrl && @hashBaseUrl != initialUrl
          window.location.pathname = @hashBaseUrl + "#!" + initialUrl
        else
          window.location.hash = "!" + initialUrl
      if window.location.hash.substring(0, 2) == "#!"
        initialUrl = window.location.hash.substring(2)
    @renderUrl(initialUrl)
    if forceUrlUpdate
      @updateUrl(forceUrlUpdate)


# Missing features:
# - support for browsers without history & onhashchange -> disable
# - copy build configs from bacon.js
# - split to own repository
# - more complete sinatra path parsing, JavascriptRouteParser
# - test suite
# - documentation
# Possible features
# - querystring parameters as part of params
# - form support, catch form submits (how would this work?) get / post?
# - chrome fails when converting plain url to hashbang url: %23
# - clarify when fallbackRoute is used
