Ich benutze einen Prototyp und ich kann keine eingebauten Erweiterungen zum Setzen oder Abrufen von Cookies finden. Nachdem ich ein wenig gegoogelt habe, sehe ich ein paar verschiedene Möglichkeiten, um darüber zu gehen. Ich habe mich gefragt, was Sie für den besten Ansatz halten, um einen Cookie in JavaScript zu erhalten?Was ist der beste Weg, um einen Cookie mit Namen in JavaScript zu erhalten?
Antwort
Ich benutze dies. Es war zuverlässig:
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 ""
}
Immer wenn ich brauche es zugreifen, verwende ich document.cookie, im Grunde, wie es in diesem Artikel beschrieben wird. Achtung, ich habe noch nie einen Prototyp benutzt, also könnte es dort einfachere Methoden geben, auf die man einfach nicht gestoßen ist.
Ich benutze diese Routine:
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;
}
recht gut funktioniert.
Falls jemand anderes es braucht, habe ich zu PhiLho's concern über Teiltreffer behoben, wenn Sie versuchen, einen Cookie-Wert zu holen.
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;
}
Ich habe vor kurzem baute auch eine wesentlich kompakter RegExp, die auch funktionieren sollte:
function getCookie(c_name){
var ret = window.testCookie.match(new RegExp("(?:^|;)\\s*"+c_name+"=([^;]*)"));
return (ret !== null ? ret[1] : null);
}
ich einige Geschwindigkeitstests haben, die das aus Philo, Quirksmode, und diese beiden scheinen zu zeigen, Implementierungen die Nicht-RegExp-Version (mit IndexOf ist sehr schnell, keine große Überraschung) oben ist der schnellste. http://jsperf.com/cookie-fetcher
In Ihrer neuen Funktion, wo das Argument "c_name" geht? – ermannob
- 1. Was ist der "beste" Weg, um einen einzelnen Cookie-Wert zu erhalten und zu setzen mit JavaScript
- 2. Was ist der beste Weg, um einen Datenrahmen zu umgehen?
- 3. Was ist der beste Weg, um einen ByteArrayOutputStream zu schließen?
- 4. Was ist der beste Weg, um einen InputStream zu überwachen?
- 5. Was ist der beste Weg, um einen Index zu erstellen, um die schnellste Leseantwort zu erhalten?
- 6. Was ist der beste Weg, um einen "Timer" zu implementieren?
- 7. Was ist der beste Weg, Namenskonflikte in Javascript zu lösen?
- 8. Was ist der beste Weg, um einen Stream um
- 9. Was ist der beste Weg, Zeitzonen mit Javascript zu behandeln
- 10. Was ist der beste Weg, um mit OSGI zu beginnen?
- 11. Was ist der beste Weg, Datumsunterschied in Javascript zu berechnen
- 12. Was ist der beste Weg, um mit NHibernate zu beginnen?
- 13. Was ist der beste Weg, Degrees konvertieren zu Quadranten Namen
- 14. Was ist der beste Weg, um einen JavaScript-Code zu verschlüsseln/zu schützen?
- 15. Was ist der beste Weg, PHP-Anwendungen zu erhalten?
- 16. Was ist der beste Weg, um einen Teilstring in einer Batch-Datei zu machen?
- 17. Was ist der beste Weg, um in C++ zu casten?
- 18. Was ist der beste Weg, um einen Nutch Index aufzufrischen?
- 19. Was ist der beste Weg, um eine Animation zu fahren?
- 20. Was ist der beste Weg, Quellcode in IMs zu formatieren, um Einrückungen zu erhalten?
- 21. Was ist der beste Weg, um mehrere Suchoptionen zu behandeln?
- 22. Was ist der beste Weg, um eine Tabelle zu deduplizieren?
- 23. Der beste Weg, um Iterator in Javascript
- 24. Was ist der beste Weg, um ein Objekt mit Hilfe von Formularen in PHP zu erhalten?
- 25. Was ist der beste Weg, um eine Enumeration zu erhöhen?
- 26. Was ist der beste Weg, um einen Int in einen String in Julia zu konvertieren?
- 27. Was ist der beste Weg, um mehrere Aktionen zu behandeln?
- 28. Was ist der beste Weg, um vorberechnete Daten zu implementieren?
- 29. Was ist der beste Weg, um eine Liste zu kopieren?
- 30. Was ist der beste Weg, um eine Eigenschaft zu deklarieren?
Kann problematisch sein, wenn Sie BEL suchen und es gibt einen Cookie namens REBEL, nein? – PhiLho