turbolinks - 当用户在使用 Turbolinks 时单击后退按钮时,MDL 菜单不起作用

标签 turbolinks material-design-lite

下面是显示 mdl 菜单的代码。他们单击编辑按钮,然后出现一个菜单。

<button class="mdl-button mdl-js-button mdl-js-ripple-effect" id="edit-button"> edit</button>
<ul id="edit_menu"  class="mdl-menu mdl-js-menu mdl-js-ripple-effect" for="edit-button">
  <li>change</li>
  <li>do something else</li>
</ul>

不幸的是,当用户单击后退按钮返回带有下拉菜单的页面时,下拉菜单不再起作用。我似乎无法重新初始化 MDL。如果我单击菜单中的链接,然后点击后退按钮,下拉菜单将保持打开状态。有什么想法吗?

相关问题是 turbolinks 破坏了 MDL 内容,但这段代码修复了它。不幸的是,当用户点击后退按钮时,它没有修复下拉菜单

document.addEventListener 'turbolinks:load', ->
  componentHandler.upgradeDom();

最佳答案

这是我解决问题的变通方法。它只发生在 1 个特定页面上,所以我在 URL 中找到了一个唯一的字符串,然后覆盖后退按钮以进行 turbolinks 访问。

window.addEventListener "popstate", (e)->
  if  (e.target.location.pathname.indexOf('customize_board')  != -1 )
    Turbolinks.visit( e.target.location)

我希望至少可以帮助一些人,以免他们的页面损坏。

关于turbolinks - 当用户在使用 Turbolinks 时单击后退按钮时,MDL 菜单不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37061946/

相关文章:

javascript - Rails 5 中的 Turbolinks 中断 Bootstrap 选择下拉菜单

ruby-on-rails - Hotwire Turbo 不替换涡轮框架,抛出警告 : Response has no matching <turbo-frame id=. ..> 元素

ruby-on-rails - 带有 Ajax 的 Rails 数据表不能与 Turbolink 一起使用

ruby-on-rails - 除了使用 body 标签之外,如何在特定页面中禁用 Turbolinks?

html - Material Design Lite 卡片中的垂直划分

javascript - Material Design 表组件不支持动态行选择

ios - iOS 上的 Material Design Lite 和 dialog-polyfill 模态对话框

css - Assets 管道的优先级是什么

javascript - 试图找到方法强制此 MDL 按钮转到新选项卡中的链接?

javascript - 处理 mdl 表复选框