Advertisement
NFJMEDIA

UTM PERSISTANCE

Apr 9th, 2023
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. <script>
  2. function getUTMParameters() {
  3. const queryString = window.location.search;
  4. const urlParams = new URLSearchParams(queryString);
  5. const utmParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
  6.  
  7. const utmData = {};
  8. utmParams.forEach(param => {
  9. if (urlParams.has(param)) {
  10. utmData[param] = urlParams.get(param);
  11. }
  12. });
  13.  
  14. return utmData;
  15. }
  16.  
  17. function storeUTMParameters(utmData) {
  18. sessionStorage.setItem('utmData', JSON.stringify(utmData));
  19. }
  20.  
  21. function getStoredUTMParameters() {
  22. const storedData = sessionStorage.getItem('utmData');
  23. return storedData ? JSON.parse(storedData) : null;
  24. }
  25.  
  26. function appendUTMParametersToLinks(utmData) {
  27. const links = document.querySelectorAll('a');
  28.  
  29. links.forEach(link => {
  30. const url = new URL(link.href);
  31. for (const [key, value] of Object.entries(utmData)) {
  32. url.searchParams.set(key, value);
  33. }
  34. link.href = url.toString();
  35. });
  36. }
  37.  
  38. document.addEventListener('DOMContentLoaded', () => {
  39. const utmData = getUTMParameters();
  40. if (Object.keys(utmData).length > 0) {
  41. storeUTMParameters(utmData);
  42. }
  43.  
  44. const storedUTMData = getStoredUTMParameters();
  45. if (storedUTMData) {
  46. appendUTMParametersToLinks(storedUTMData);
  47. }
  48. });
  49. </script>
  50.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement