2016-01-29 2 views
0

У меня есть две вкладки. Первая - домашняя вкладка, а другая - вкладка 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, не возвращают вкладку «Главная» и другие вкладки. По какой причине? И Как сбросить значение счетчика других вкладок из рабочей вкладки?

+0

Ты знаешь что-нибудь о «localStorage» ?. Вы можете записать свой статус в локальном хранилище и проверить его на другой вкладке, прочитав его. – dvenkatsagar

+0

Почему бы не использовать файлы cookie. Сохраните счетчик времени отслеживания в файле cookie и сбросьте его, когда захотите сделать это с вкладки. [Ссылка] [http://stackoverflow.com/questions/1599287/create-read-and-erase -cookies-with-jquery] – shu

ответ

1

Ну, вы можете написать функциональность таким образом, чтобы она сохраняла значение в HTML5 localStorage, когда вы что-то делаете.

if (typeof(Storage) !== "undefined") { 
    localStorage.setItem("reset", "true"); 
} 

И если вы ничего не сделаете, оно установит его в ложное.

localStorage.setItem("reset", "false"); 

Вы можете проверить эти значения, как это:

localStorage.getItem("reset"); 

Так что, когда у вас есть различные вкладки одного и того же домена, вы можете проверить и посмотреть, если вы сделали что-нибудь в другой вкладке.

Ref: http://www.w3schools.com/html/html5_webstorage.asp

Надеется, что это помогает.

+0

Спасибо за ваш ответ –