首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >reitit.frontend - HTML5Router不阻止在匹配路由上按应有的方式单击锚点。

reitit.frontend - HTML5Router不阻止在匹配路由上按应有的方式单击锚点。
EN

Stack Overflow用户
提问于 2022-05-08 16:59:42
回答 1查看 50关注 0票数 1

如果我们选择了behavior

忽略--单击此处的函数永远不会被称为

  • ,因为goog.events/listen下面的几行缺少真正的第4 arg,所以浏览器首先捕获单击,永远不会到达document.click

  • is

代码语言:javascript
复制
(gevents/listen js/document goog.events.EventType.CLICK ignore-anchor-click))

  • 应该是-那么所有的works

代码语言:javascript
复制
(gevents/listen js/document goog.events.EventType.CLICK ignore-anchor-click true))

问题

  • 是否有一种无需公关或分叉就能改变这种行为的方法?
EN

回答 1

Stack Overflow用户

发布于 2022-05-08 17:32:31

解决方案

从reitit.frontent.history

  • using历史记录复制函数代码
  • 取消订阅和重新订阅

代码语言:javascript
复制
(let [history (Yzma.frontend.easy/start! _ _ _)]
  (goog.events/unlistenByKey (:click-listen-key history))
  (goog.events/listen
   js/document
   goog.events.EventType.CLICK
   (fn [event]
     (when-let [element (Yzma.frontend.history/closest-by-tag
                         (Yzma.frontend.history/event-target event) "a")]
       (let [uri (.parse goog.Uri (.-href element))]
         (when (Yzma.frontend.history/ignore-anchor-click?
                (.-router history) event element uri)
           (.preventDefault event)
           (let [path (str (.getPath uri)
                           (when (.hasQuery uri)
                             (str "?" (.getQuery uri)))
                           (when (.hasFragment uri)
                             (str "#" (.getFragment uri))))]
             (.pushState js/window.history nil "" path)
             (Yzma.frontend.history/-on-navigate history path)))))) true))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72163300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档