Estoy usando un prototipo y no puedo encontrar ninguna extensión integrada para establecer o recuperar cookies. Después de googlear un poco, veo algunas formas diferentes de hacerlo. Me preguntaba cuál crees que es el mejor enfoque para obtener una cookie en JavaScript.¿Cuál es la mejor manera de obtener una cookie por nombre en JavaScript?
Respuesta
Yo uso esto. Ha sido fiable:
function getCookie(c_name) {
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=")
if (c_start!=-1)
{
c_start=c_start + c_name.length+1
c_end=document.cookie.indexOf(";",c_start)
if (c_end==-1) c_end=document.cookie.length
return unescape(document.cookie.substring(c_start,c_end))
}
}
return ""
}
Cada vez que necesita para acceder a ella, yo uso document.cookie, básicamente, cómo se describe en este artículo. Cuidado, nunca he usado un prototipo, por lo que puede que haya métodos más fáciles que no haya encontrado.
utilizo esta rutina:
function ReadCookie(name)
{
name += '=';
var parts = document.cookie.split(/;\s*/);
for (var i = 0; i < parts.length; i++)
{
var part = parts[i];
if (part.indexOf(name) == 0)
return part.substring(name.length)
}
return null;
}
funciona bastante bien.
En caso de que alguien más lo necesite, he arreglado en la dirección PhiLho's concern sobre coincidencias parciales cuando intento recuperar el valor de una cookie.
function getCookie(c_name) {
var nameEQ = c_name + '=';
var c_start = 0;
var c_end = 0;
if (document.cookie.substr(0, nameEQ.length) === nameEQ) {
return document.cookie.substring(nameEQ.length, document.cookie.indexOf(';', nameEQ.length));
} else {
c_start = document.cookie.indexOf('; ' + nameEQ);
if(c_start !== -1){
c_start += nameEQ.length + 2;
c_end = document.cookie.indexOf(';', c_start);
if (c_end === -1) {c_end = document.cookie.length;}
return document.cookie.substring(c_start, c_end);
}
}
return null;
}
he recientemente también construyeron una expresión regular mucho más compacto que debería funcionar así:
function getCookie(c_name){
var ret = window.testCookie.match(new RegExp("(?:^|;)\\s*"+c_name+"=([^;]*)"));
return (ret !== null ? ret[1] : null);
}
Hice algunas pruebas de velocidad que parecen indicar que de Philo, quirksmode, y estos dos implementaciones la versión no RegExp (utilizando indexOf es muy rápido, no es una gran sorpresa) arriba es la más rápida. http://jsperf.com/cookie-fetcher
En su nueva función, ¿dónde va el argumento "c_name"? – ermannob
- 1. ¿Cuál es la mejor manera de hacer bucles en JavaScript
- 2. ¿Cuál es la "mejor" forma de obtener y establecer un único valor de cookie mediante JavaScript?
- 3. ¿Cuál es la mejor manera de implementar params en JavaScript?
- 4. ¿Cuál es la mejor manera de recortar() en javascript
- 5. ¿Cuál es la mejor manera de hacer una subcadena en un archivo por lotes?
- 6. ¿Cuál es la mejor manera de probar javascript?
- 7. ¿Cuál es la mejor manera de incluir Javascript?
- 8. ¿Cuál es la mejor manera de inicializar una fecha de JavaScript a la medianoche?
- 9. ¿Cuál es la mejor manera de determinar si una fecha es hoy en JavaScript?
- 10. ¿Cuál es la mejor manera de incrementar una enumeración?
- 11. ¿Cuál es la mejor manera de contar la longitud absoluta de la matriz en JavaScript?
- 12. ¿Cuál es la mejor manera de dividir un nombre de ruta en sus componentes en Lua
- 13. ¿Cuál es la mejor manera de dividir una cadena por un delimitador de manera funcional?
- 14. Cuál es la mejor manera de obtener la impresora predeterminada en .NET
- 15. ¿Cuál es la mejor manera de declarar una variable global?
- 16. Cuál es la mejor manera de autorizar una llave USB
- 17. ¿Cuál es la mejor manera de construir una NSCompoundPredicate compleja?
- 18. ¿La mejor manera de obtener imágenes?
- 19. ¿Cuál es la mejor manera de analizar una gramática simple?
- 20. ¿Cuál es la mejor manera de minimizar el Javascript generado por ASP.NET?
- 21. ¿Es esta la mejor manera de obtener una versión única del nombre de archivo w/Python?
- 22. ¿Cuál es la mejor manera de deducir una mesa?
- 23. ¿Cuál es la mejor manera de consultar una matriz en javascript para obtener solo los elementos de ella que quiero?
- 24. ¿Cuál es la mejor manera de atrapar una excepción IllegalArgumentException
- 25. ¿cuál es la mejor manera de verificar una matriz vacía?
- 26. Cuál es la mejor manera de paginar resultados en php
- 27. ¿Cuál es la mejor manera de perfilar una aplicación Sinatra?
- 28. ¿Cuál es la mejor manera de implementar una aplicación Pylons?
- 29. ¿Cuál es la mejor manera de copiar una lista?
- 30. ¿Cuál es la mejor manera de obtener una descripción del sitio web, en Python?
Puede ser problemático si buscas BEL y hay una cookie llamada REBEL, ¿no? – PhiLho