У меня есть библиотека sysend.js, которая позволяет отправлять сообщения на другие вкладки/окна с использованием события хранения. Бу в IE событие запускается также на той же странице, где используется setItem. Есть ли способ обнаружить в IE, если событие хранилища запущено на той же или другой странице?Как определить, произошло ли событие хранения localStorage с той же страницы в IE?
Мой код для события хранения выглядеть следующим образом:
var uniq_prefix = '___sysend___';
function get(key) {
return localStorage.getItem(uniq_prefix + key);
}
var callbacks = {};
window.addEventListener('storage', function(e) {
// get user key
var key = e.key.replace(new RegExp('^' + uniq_prefix), '');
if (callbacks[key]) {
var obj = JSON.parse(get(key));
if (obj) {
// don't call on remove
callbacks[key].forEach(function(fn) {
fn(obj[1], key);
});
}
}
}, false);
данные в LocalStorage является массив с идентификатором в качестве первого элемента и фактических данных в качестве второго пункта.