【问题标题】:Turbo Drive not intercepting link clicks (but turbo:load event fires)Turbo Drive 不拦截链接点击(但 turbo:load 事件触发)
【发布时间】:2023-02-02 17:47:31
【问题描述】:

我正在尝试将 Turbo 添加到 Rails 6.1 应用程序。

它似乎正在加载(请参阅“我试过的内容”),但是当点击周围时,点击似乎没有被拦截。我仍在重新加载整页。

谁能帮我找出这里缺少的东西?

我试过的

  1. 添加了一个带有 console.log() 输出的事件处理程序,显示 turbo:load 确实被触发了
  2. 确保Turbo.session.drive = trueapplication.js
  3. 甚至尝试将 data-turbo="true" 添加到 <main> 标签,但这似乎没有任何区别。考虑到 pt,也许并不奇怪。 2.
  4. Firefox 和 Chrome

    设置

    // app/javascript/application.js
    
    import { Turbo } from "@hotwired/turbo-rails"
    Turbo.session.drive = true
    
    # config/importmap.rb
    
    pin 'application', preload: true
    pin '@hotwired/turbo-rails', to: 'turbo.js'
    
    // Debugging statement 
    
    document.addEventListener('turbo:load', function() {
      console.log('turbo:load');
    })
    

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-6 turbolinks hotwire-rails turbo-rails


    【解决方案1】:

    所以我发现只是在 <head> 中包含 Google Analytics 4 脚本标签导致 Turbo 无法工作:

    <script async src="https://www.googletagmanager.com/gtag/js?id=<OUR ID>"/>
    

    原因? GA4 的自动出站链接点击跟踪,我们已启用。有一个very recent Github issue about this。如评论中所述:

    “......似乎他们在链接点击事件上调用了 preventDefault,即使 这不是出站点击。 Turbo 然后决定它不是significant event,所以允许导航正常进行”

    我在 GA4 中禁用了此功能,一切顺利。

    【讨论】:

      猜你喜欢
      • 2023-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      • 1970-01-01
      • 2011-05-22
      相关资源
      最近更新 更多