У меня есть две вкладки. Первая - домашняя вкладка, а другая - вкладка home-1. Здесь я отслеживаю счет времени для входа в систему для выхода из системы. У меня есть код в одном файле сценария java. эта работа как два экземпляра.Как сбросить значение одной переменной на одной или нескольких вкладках?
домашняя вкладка -> www.example.com/home // (файл моего java-скрипта содержит этот каталог) первый экземпляр.
home-1 tab -> www.example.com/home-1 // (обязательный файл сценария включает вкладку дома на эту вкладку) второй экземпляр.
Любое событие «ключ/мышь» сбросит счетчик.
var sestmout=0;
var idletm=60*1;
var idletmcntr=0;
var idletimeout=null;
var lastUpdate1 = new Object();
var lastUpdate = 0;
var curdttm = new Date();
$(document).ready(function(){
initidletm();
});
lastUpdate1.cntr = idletmcntr;
lastUpdate1.ctme = curdttm.getMilliseconds();
lastUpdate1.time = curdttm.getTime();
function reset_cnt(){
if(idletmcntr != 0){
curdttm = new Date();
lastUpdate1.cntr = idletmcntr;
lastUpdate1.ctme = curdttm.getMilliseconds();
lastUpdate1.time = curdttm.getTime();
var a = moment();
lastUpdate1.utme = a.valueOf();
}
idletmcntr=0;
}
document.onclick=function(){
reset_cnt();
};
document.onmousemove=function(){
reset_cnt();
};
document.onkeypress=function() {
reset_cnt();
};
В каждой вкладке я включаю выше строки в файл сценария java. Теперь я запускаю событие mouse/key на домашней вкладке, которое возвращает значение счетчика на вкладке home-1.
Использование этого кода.
function initidletm(){
if(window.name == "home-1"){
window.opener.document.onkeypress = document.onkeypress;
window.opener.document.onclick = document.onclick;
window.opener.document.onmousemove = document.onmousemove;
}else if(window.name == "home-2"){
window.opener.document.onkeypress = document.onkeypress;
window.opener.document.onclick = document.onclick;
window.opener.document.onmousemove = document.onmousemove;
}
else{ // home tab
document.onkeypress=function() {
reset_cnt();
};
document.onclick=function() {
reset_cnt();
};
document.onmousemove=function() {
reset_cnt();
};
}
}
clearTimeout(idletimeout);
idletimeout=setTimeout(trackidletm,1000);
function trackidletm() {
initidletm();
}
Этот подход является неправильным. Только домашняя вкладка возвращает значение счетчика на вкладку home-1 и другие вкладки. Другие вкладки, такие как вкладка home-1, не возвращают вкладку «Главная» и другие вкладки. По какой причине? И Как сбросить значение счетчика других вкладок из рабочей вкладки?
Ты знаешь что-нибудь о «localStorage» ?. Вы можете записать свой статус в локальном хранилище и проверить его на другой вкладке, прочитав его. – dvenkatsagar
Почему бы не использовать файлы cookie. Сохраните счетчик времени отслеживания в файле cookie и сбросьте его, когда захотите сделать это с вкладки. [Ссылка] [http://stackoverflow.com/questions/1599287/create-read-and-erase -cookies-with-jquery] – shu