Javascript 带有Turbolinks窗口的Rails.onbeforeunload

Javascript 带有Turbolinks窗口的Rails.onbeforeunload,javascript,ruby-on-rails,turbolinks,Javascript,Ruby On Rails,Turbolinks,我目前有一个使用TurboLink的Rails应用程序。在这个应用程序中,我试图跟踪在特定视图上花费的时间。我已经研究了无数的问题,并浏览了名为window.onbeforeunload、window.beforeunload、window.on('beforeunload')的多种变体。。。我目前的尝试是: $(document).ready(function() { var start = Date.now(); var id = gon.subjId; var rand_index =

我目前有一个使用TurboLink的Rails应用程序。在这个应用程序中,我试图跟踪在特定视图上花费的时间。我已经研究了无数的问题,并浏览了名为window.onbeforeunload、window.beforeunload、window.on('beforeunload')的多种变体。。。我目前的尝试是:

$(document).ready(function() {

var start = Date.now();

var id = gon.subjId;
var rand_index = gon.randIndex;
var index = gon.index;

console.log('showing article ' + index + ' at index ' + rand_index + ' for ' + id);

$(document).on('turbolinks:before-change', function() {
  $.post('/log', {subj_id: id, article: {index: index, rand_index: rand_index, time_spent: Date.now()-start}},
    function(response) {
    });
})
}))


我知道使用AJAX请求的函数是有效的;但是,它不被称为。按下“后退”按钮时,如何调用此函数?

我仍然不确定潜在的错误是什么,但我将脚本更改为此,并像一个符咒一样工作:

$(document).ready(function() {
var start = Date.now();

var id = gon.subjId;
var rand_index = gon.randIndex;
var index = gon.index;

console.log('showing article ' + index + ' at index ' + rand_index + ' for ' + id);

function logVisit() {
  console.log('logging visit');

  $.post('/log', {subj_id: id, article: {index: index, rand_index: rand_index, time_spent: Date.now()-start}},
    function(response) {
  });
  document.removeEventListener('turbolinks:before-cache', logVisit);
}

document.addEventListener('turbolinks:before-cache', logVisit);
});

我认为Rails 5已经将turbolinks事件的名称空间更改为
turbolinks
,而不是
page
尝试使用
turbolinks:change
之前,我尝试过并更新了这个问题,但是它仍然不起作用
turbolinks:load
现在有一个
event.data.timing
,这不是你期望看到的日期吗?参考这个