cookie.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /*!
  2. Cookie helper functions
  3. Copyright (c) 2023 Dimitri van Heesch
  4. Released under MIT license.
  5. */
  6. let Cookie = {
  7. cookie_namespace: 'doxygen_',
  8. readSetting(cookie,defVal) {
  9. if (window.chrome) {
  10. const val = localStorage.getItem(this.cookie_namespace+cookie) ||
  11. sessionStorage.getItem(this.cookie_namespace+cookie);
  12. if (val) return val;
  13. } else {
  14. let myCookie = this.cookie_namespace+cookie+"=";
  15. if (document.cookie) {
  16. const index = document.cookie.indexOf(myCookie);
  17. if (index != -1) {
  18. const valStart = index + myCookie.length;
  19. let valEnd = document.cookie.indexOf(";", valStart);
  20. if (valEnd == -1) {
  21. valEnd = document.cookie.length;
  22. }
  23. return document.cookie.substring(valStart, valEnd);
  24. }
  25. }
  26. }
  27. return defVal;
  28. },
  29. writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete
  30. if (window.chrome) {
  31. if (days==0) {
  32. sessionStorage.setItem(this.cookie_namespace+cookie,val);
  33. } else {
  34. localStorage.setItem(this.cookie_namespace+cookie,val);
  35. }
  36. } else {
  37. let date = new Date();
  38. date.setTime(date.getTime()+(days*24*60*60*1000));
  39. const expiration = days!=0 ? "expires="+date.toGMTString()+";" : "";
  40. document.cookie = this.cookie_namespace + cookie + "=" +
  41. val + "; SameSite=Lax;" + expiration + "path=/";
  42. }
  43. },
  44. eraseSetting(cookie) {
  45. if (window.chrome) {
  46. if (localStorage.getItem(this.cookie_namespace+cookie)) {
  47. localStorage.removeItem(this.cookie_namespace+cookie);
  48. } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) {
  49. sessionStorage.removeItem(this.cookie_namespace+cookie);
  50. }
  51. } else {
  52. this.writeSetting(cookie,'',-1);
  53. }
  54. },
  55. }