Trois pages Web différentes ont chacune trois zones pouvant être traitées (content1
, content2
et content3
).Un emplacement de stockage local JavaScript pour les zones de différentes pages
Chaque page est liée à un JavaScript qui utilise le stockage local pour stocker les entrées de l'utilisateur et les présenter de nouveau à leur retour.
Lorsque je modifie le contenu d'une page, il modifie le contenu de la même zone modifiable sur les trois pages.
Je souhaite que chaque page puisse utiliser le même script pour enregistrer ses propres données indépendamment des autres pages.
J'ai essayé d'ajouter l'emplacement de page (url) à la clé de stockage local, pour que chaque page utilise le même script pour stocker et récupérer ses propres données, mais je n'arrive pas à le faire fonctionner. Je suis nouveau à JavaScript - serait reconnaissant pour toute aide. Merci!
window.addEventListener('load', onLoad);
function onLoad() {
checkEdits();
}
// Get page location
var loc = encodeURIComponent(window.location.href);
// Add location to local storage key
function checkEdits() {
if (localStorage.userEdits1 != null) {
var userEdits1 = (loc + userEdits1);
document.getElementById('content1').innerHTML = localStorage.userEdits1;
}
if (localStorage.userEdits2 != null) {
var userEdits2 = (loc + userEdits2);
document.getElementById('content2').innerHTML = localStorage.userEdits2;
}
if (localStorage.userEdits3 != null) {
var userEdits3 = (loc + userEdits3);
document.getElementById('content3').innerHTML = localStorage.userEdits3;
}
};
document.onkeyup = function (e) {
e = e || window.event;
console.log(e.keyCode);
saveEdits();
};
function saveEdits() {
// Get editable elements
var editElem1 = document.getElementById('content1');
var editElem2 = document.getElementById('content2');
var editElem3 = document.getElementById('content3');
// Get edited elements contents
var userVersion1 = editElem1.innerHTML;
var userVersion2 = editElem2.innerHTML;
var userVersion3 = editElem3.innerHTML;
// Add page location to storage key
var userEdits1 = (loc + userEdits1);
var userEdits2 = (loc + userEdits2);
var userEdits3 = (loc + userEdits3);
// Save the content to local storage
localStorage.userEdits1 = userVersion1;
localStorage.userEdits2 = userVersion2;
localStorage.userEdits3 = userVersion3;
};
function clearLocal() {
if (confirm('Are you sure you want to clear your notes on this page?')) {
localStorage.setItem("userEdits1", "");
localStorage.setItem("userEdits2", "");
localStorage.setItem("userEdits3", "");
document.getElementById('content1').innerHTML = "";
document.getElementById('content2').innerHTML = "";
document.getElementById('content3').innerHTML = "";
alert('Notes cleared');
}
}
Nous vous remercions de votre réponse réfléchie et détaillée. Le code fonctionne exactement comme je l'espérais et m'aidera à apprendre beaucoup de choses. – Steve