Rails 4: 在特定页面禁用 Turbolinks

Turbolinks是Rails的一个默认特性,它通过JavaScript将新页面的内容加载到当前页面的DOM中,以提高网站的速度和流畅度。但有时候你可能需要在某个页面禁用Turbolinks来避免一些问题。

本文将介绍如何在Rails 4中禁用Turbolinks,以及为什么要这样做。

为什么要禁用Turbolinks?

尽管TurboLinks可以加速网站加载时间,但它也可能会引起一些问题,例如:

  • 某些JavaScript插件可能无法正常工作,因为它们依赖于整个页面被重新加载。
  • 如果您的应用程序依赖于页面或脚本的初始化,那么Turbolinks可能会导致它们只在第一次访问该页面时运行。
  • 您可能需要使用不同的CSS或JavaScript文件,以供特定页面使用。

除此之外,有时您可能只是想直接链接至另一个页面而不是通过JavaScript实现。

禁用Turbolinks

要在Rails 4中禁用Turbolinks,您可以使用以下方法:

方法1:将data-turbolinks属性设置为false

您可以在链接或表单上将 data-turbolinks 属性设置为 false,以指示Turbolinks不要处理该链接或表单提交。

-- ----------------- --------------------------- ---------- ------

方法2:使用JavaScript禁用Turbolinks

如果您需要在JavaScript中禁用Turbolinks,可以使用以下代码:

--------------------------------- ---------- -
  -- ------- ---------- ---
---

----------------------------------------- ---------- -
  -- ------------
---

当您打开一个新页面时,turbolinks:load事件将被触发。您可以在该事件内部添加您需要运行的任何JavaScript代码。

示例代码

以下示例代码演示了如何在Rails 4中禁用Turbolinks。

---- -------------------------------------- ---

--------- -----
------
  ------
    ----------- ----------- ------------
    --- -------------------    -------------- ------ ------ ------------------------ -------- --
    --- ---------------------- -------------- ------------------------ -------- --
    --- -------------- --
  -------
  ------

    ---- ------- ---------- ----- ---
    -- ----------------- --------------------------- ---------- ------

    ---- --------------- ---
    -- -- --------------------------- --
      --------
        --------------------------------- ---------- -
          ------------------------
        ---
      ---------
    -- --- --

    --- ----- --

  -------
-------

在这个示例中,我们设置了一个不使用Turbolinks加载的链接,并通过JavaScript禁用了Turbolinks缓存。如果要禁用Turbolinks,请在页面视图文件(例如app/views/pages/show.html.erb)中添加以下代码:

---- ----------------------------- ---

-- ----------- ------------------- -- --
  ----
-- --- --

---- ------- ---- -- ---

当页面被渲染时,content_for方法将设置一个名为 disable_turbolinks 的内容块,以告诉布局模板禁用Turbolinks。

总结

虽然Turbolinks可以加速网站的加载时间,但它也可能导致一些问题。本文介绍了如何在Rails 4中禁用T

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/27543