anchor.diff:              let s = JS.Window.Location.Pathname
               Some (s.[..s.LastIndexOf('/')] + href |> trimFragment)
   
  +    let rec private findLinkHref (n: Dom.Element) =
  +        if n.TagName = "A" then
  +            n.GetAttribute("href") |> Option.ofObj
  +        elif n ===. JS.Document.Body then
  +            None
  +        else
  +            findLinkHref (n.ParentNode :?> Dom.Element)
  +
       /// Installs client-side routing on the full URL. 
       /// If initials URL parse fails, value is left as the initial value of `var`.
       let InstallInto (var: Var<'T>) onParseError (router: Router<'T>) : unit =
  
positive.code:             if var.Value <> value then
                  var.Value <- value
          
          JS.Window.Onpopstate <- fun ev ->
              set (cur())
  
          JS.Document.Body.AddEventListener("click", (fun (ev: Dom.Event) ->
              let rec findLinkElt (n: Dom.Node) =
                  if (n :?> Dom.Element).TagName = "A" then Some (n :?> Dom.Element)
                  elif n ===. JS.Document.Body then None
                  else findLinkElt n.ParentNode
              findLinkElt (As ev.Target)
              |> Option.bind (fun t -> t.GetAttribute("href") |> hrefToAbsolute)
              |> Option.bind (Route.FromUrl >> parse)
              |> Option.iter (fun a ->
                  set a
  
negative.code:             if var.Value <> value then
                  var.Value <- value
         
          JS.Window.AddEventListener("popstate", (fun () -> set (cur())), false)
          JS.Window.AddEventListener("hashchange", (fun () -> set (cur())), false)
  
          JS.Document.Body.AddEventListener("click", (fun (ev: Dom.Event) ->
              findLinkHref (As ev.Target)
              |> Option.bind (fun href -> if href.StartsWith "#" then parse href else None)
              |> Option.iter (fun a ->
                  set a
                  ev.PreventDefault()
              )
          ), false)
  
          var.View
          |> View.Sink (fun value ->
              if value <> cur() then 
  