如何在用户按下后退按钮后触发 CoffeeScript/Javascript

How to fire CoffeeScript/Javascript after user presses back button

我的 Rails 4 应用程序 UI 的不同部分依赖于动态填充的 select 控件,其中选项 select 在第一个 select 确定第二个 select 中可用的选项。当触发 select 的 onChange 事件时设置第二个 select 运行 选项的脚本。

一切正常,直到用户单击浏览器的后退按钮和 returns 到包含两个 select 控件的表单。第一个 select 保留用户的 selection,但第二个 select(由脚本动态填充)恢复为默认选项。

当用户使用后退按钮时,浏览器似乎根本不会触发任何事件,因此我似乎没有任何东西可以挂起我的脚本。如何在用户按下后退按钮后让我的脚本进入 运行?

如果我无法获得 运行 的实际脚本,我有什么选择?我是否必须放弃动态 selects 以支持在一个控件中列出所有选项的单个大量 select?

这是一个不优雅但权宜之计的解决方案:

我没有重新创建我自己的会话历史记录机制,我只是在我的表单中添加了一个 javascript_tag,其中包含在页面加载时运行的脚本副本(包括当用户点击后退按钮时,而仅当新加载页面时 运行 我的资产文件夹中的脚本)。

这个解决方案无论如何都不是 DRY,但它在这种有限的情况下有效。