Używam prototypu i nie mogę znaleźć żadnych wbudowanych rozszerzeń do ustawiania lub pobierania plików cookie. Po trochę googlowania, widzę kilka różnych sposobów, aby to osiągnąć. Zastanawiam się, co według ciebie jest najlepszym sposobem na uzyskanie cookie w JavaScript?Jaki jest najlepszy sposób uzyskania cookie według nazwy w JavaScript?
Odpowiedz
Używam tego. To był niezawodny:
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 ""
}
Zawsze muszę do niego dostęp, używam document.cookie, w zasadzie, jak to jest opisane w tym artykule. Zastanawiam się, nigdy nie korzystałem z prototypu, więc mogą istnieć łatwiejsze metody, których po prostu nie spotkasz.
Używam tego rutynę:
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;
}
działa całkiem dobrze.
W przypadku ktoś go potrzebuje, mam stały się zająć PhiLho's concern o znaków, próbując sprowadzić wartość 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;
}
Ja również niedawno wybudowany znacznie bardziej zwarty RegExp, które powinny pracować, a także:
function getCookie(c_name){
var ret = window.testCookie.match(new RegExp("(?:^|;)\\s*"+c_name+"=([^;]*)"));
return (ret !== null ? ret[1] : null);
}
Zrobiłem kilka testów prędkości, które zdają się wskazywać, że z Philo, Quirks Mode i te dwie implementacje wersja non-RegExp (przy użyciu indexOf jest bardzo szybka, nie jest ogromną niespodzianką) powyżej jest najszybsza. http://jsperf.com/cookie-fetcher
W swojej nowej funkcji, gdzie występuje argument "c_name"? – ermannob
- 1. Jaki jest najlepszy sposób filtrowania listy obiektów JSON w JavaScript?
- 2. Jaki jest najlepszy sposób profilowania wykonywania javascript?
- 3. Jaki jest najlepszy sposób uzyskania identyfikatora SID obecnego użytkownika?
- 4. Jaki jest najlepszy sposób na zainicjowanie daty JavaScript do północy?
- 5. Jaki jest najlepszy sposób sortowania hashtable według wartości?
- 6. Jaki jest najlepszy sposób tworzenia prostych funkcji filtru w javascript?
- 7. Jaki jest najlepszy sposób kodowania/ochrony kodu javascript?
- 8. W jaki sposób uzyskać identyfikator procesu według nazwy procesu?
- 9. Doctrine 2 Jaki jest zalecany sposób uzyskania dostępu do właściwości?
- 10. Najlepszy sposób uzyskania PK Guid wstawionego wiersza
- 11. Jaki jest najlepszy sposób uzyskania ostatnich 24 godzin w wyniku T-SQL?
- 12. Jaki jest najlepszy sposób uzyskania funkcji podobnej do sscanf w Perlu?
- 13. Jaki jest najlepszy sposób uzyskania danych wejściowych od użytkownika w C?
- 14. Jaki jest najlepszy sposób uzyskania czasu trwania pliku audio w systemie Android?
- 15. Jaki jest najlepszy sposób uzyskania aktualnego adresu URL w Spring MVC?
- 16. Jaki jest najlepszy sposób uzyskania konkretnej wersji CocoaPod w czasie wykonywania?
- 17. Jaki jest najlepszy sposób uzyskania ostatniego znaku indeksowego w SQL 2008
- 18. Jaki jest najlepszy sposób uzyskania tekstowych interfejsów użytkownika (podobnych do ncurses) w Javie?
- 19. W interfejsie API GitHub - jaki jest najlepszy sposób uzyskania ostatniego komunikatu zatwierdzenia związanego z każdym plikiem?
- 20. Jaki jest lepszy sposób uzyskania całkowitego czasu wykonania aplikacji Node.js?
- 21. Jaki jest właściwy sposób uzyskania konta na CPAN?
- 22. Jaki jest najlepszy sposób na obsługę I18N w tabelach odnośników?
- 23. Jaki jest najlepszy sposób przetestowania aplikacji szyny?
- 24. Jaki jest najlepszy sposób rejestrowania aktywności użytkowników?
- 25. Jaki jest najlepszy sposób na seed srand()?
- 26. Jaki jest najlepszy sposób tworzenia wdrożeń ClickOnce
- 27. Jaki jest najlepszy sposób zamknięcia gałęzi Mercurial?
- 28. Jaki jest najlepszy sposób odczytu GetResponseStream()?
- 29. Jaki jest najlepszy sposób implementacji protokołów?
- 30. Jaki jest najlepszy sposób uczenia się WCF?
Może być problematyczne, jeśli przeszukasz BEL i jest plik cookie o nazwie REBEL, nie? – PhiLho