Javascript 带有Turbolinks窗口的Rails.onbeforeunload
我目前有一个使用TurboLink的Rails应用程序。在这个应用程序中,我试图跟踪在特定视图上花费的时间。我已经研究了无数的问题,并浏览了名为window.onbeforeunload、window.beforeunload、window.on('beforeunload')的多种变体。。。我目前的尝试是: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 =
$(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
,这不是你期望看到的日期吗?参考这个