He estado aprendiendo sobre cómo obtener cookies de una página web. A continuación se muestra el código extraído de w3schools.com. No estoy seguro de por qué usaron esta línea de código en la función getCookies(cname) como se muestra a continuación. ¿Por qué debería haber un espacio en blanco al comienzo de cada cadena en la matriz "ca"? ¿Y por qué deberíamos tomar c.substring(1)?
while (c.charAt(0) == ' ') { c = c.substring(1); }Este es el código completo:
function setCookie(cname, cvalue, exdays) { const d = new Date(); d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); let expires = "expires="+d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; } function getCookie(cname) { let name = cname + "="; let ca = document.cookie.split(';'); for(let i = 0; i < ca.length; i++) { let c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; } function checkCookie() { let user = getCookie("username"); if (user != "") { alert("Welcome again " + user); } else { user = prompt("Please enter your name:", ""); if (user != "" && user != null) { setCookie("username", user, 365); } } }while loop use simplemente elimine el primer espacio vacío;
for(let i = 0; i < ca.length; i++) { let c = ca[i]; // example ' abde dfda' while (c.charAt(0) == ' ') { console.log('charAt =>',c.charAt(0)) console.log('subString =>',c.substring(1)) c = c.substring(1); console.log('final c =>', c); } }
el primer carácter de la cookie es el valor ' ' y luego se elimina el ciclo while por c.substring(1)
ejemplo
c = ' alertDialog=yes' eso significa c.chartAt(0) = ' ' ok
while (' ' == ' ') condición verdadera
después
c establece c = 'alertDialog=yes'
luego segundo bucle falso