1// let articleHeftteaserObj = { 2// "tealium_event": "teaser_article", 3// "event_action": "click", 4// "target_url": "url", 5// "teaser_title": "title" 6// } 7 8// To do's 9// Test with Danilo's browser plugin 10// tealium_event instead of event_name 11 12document.addEventListener("DOMContentLoaded", function () { 13 let checkUtagObject = setInterval(function () { 14 if (typeof utag !== "undefined") { 15 clearInterval(checkUtagObject); 16 const options = { 17 root: null, 18 rootMargin: "0px", 19 threshold: 1.0, 20 }; 21 let page_name; 22 if (myData.is_home) { 23 page_name = "home"; 24 } else { 25 page_name = myData.current; 26 } 27 28 const searchBarBtn = document.getElementById("suchenBtn2"); 29 searchBarBtn.addEventListener("click", function (event) { 30 let search = { 31 tealium_event: "search", 32 event_action: "click", 33 event_content: document.getElementById("searchBar").value, 34 }; 35 console.log(search); 36 window.utag.link(search); 37 }); 38 const newsletterBtns = document.getElementsByClassName("newsletter-btn"); 39 for (let i = 0; i < newsletterBtns.length; i++) { 40 newsletterBtns[i].addEventListener("click", function (event) { 41 let newsletterSub = { 42 tealium_event: "email_signup", 43 event_action: "click", 44 event_section: newsletterBtns[i].getAttribute("data-section"), 45 }; 46 window.utag.link(newsletterSub); 47 }); 48 } 49 50 const cmsBannerObserver = new IntersectionObserver( 51 cmsBannerCallback, 52 options 53 ); 54 function cmsBannerCallback(entries, cmsBannerObserver) { 55 entries.forEach((entry) => { 56 if (entry.isIntersecting) { 57 console.log(entry.target); 58 let cmsBannerObj = { 59 tealium_event: "cms_banner", 60 event_action: "view", 61 event_data: entry.target.getAttribute("href"), 62 page_name: page_name, 63 }; 64 window.utag.link(cmsBannerObj); 65 } 66 }); 67 } 68 const cmsBanner = document.querySelectorAll(".cms-banner div a"); 69 for (let i = 0; i < cmsBanner.length; i++) { 70 cmsBannerObserver.observe(cmsBanner[i]); 71 cmsBanner[i].addEventListener("click", function (event) { 72 let cmsBannerObj = { 73 tealium_event: "cms_banner", 74 event_action: "click", 75 event_data: cmsBanner[i].getAttribute("href"), 76 page_name: page_name, 77 }; 78 window.utag.link(cmsBannerObj); 79 }); 80 } 81 82 const adTeasersObserver = new IntersectionObserver( 83 adTeasersCallback, 84 options 85 ); 86 function adTeasersCallback(entries, adTeasersObserver) { 87 entries.forEach((entry) => { 88 if (entry.isIntersecting) { 89 console.log(entry.target); 90 let adTeasersObj = { 91 tealium_event: "advertorial_teaser", 92 event_action: "view", 93 target_url: entry.target.getAttribute("href"), 94 teaser_title: entry.target.querySelector(".teaser-title div h1") 95 .innerHTML, 96 page_name: "home", 97 }; 98 window.utag.link(adTeasersObj); 99 } 100 }); 101 } 102 const adTeasers = document.querySelectorAll(".is-advertorial"); 103 for (let i = 0; i < adTeasers.length; i++) { 104 adTeasersObserver.observe(adTeasers[i]); 105 adTeasers[i].addEventListener("click", function (event) { 106 let adTeaserObj = { 107 tealium_event: "advertorial_teaser", 108 event_action: "click", 109 target_url: adTeasers[i].getAttribute("href"), 110 teaser_title: adTeasers[i].querySelector("a .teaser-title div h1") 111 .innerHTML, 112 page_name: "home", 113 }; 114 window.utag.link(adTeaserObj); 115 }); 116 } 117 118 if (myData.is_home) { 119 const issueBtnsObserver = new IntersectionObserver( 120 issueBtnsCallback, 121 options 122 ); 123 function issueBtnsCallback(entries, issueBtnsObserver) {
124 entries.forEach((entry) => { 125 if (entry.isIntersecting) { 126 console.log(entry.target); 127 let ausgabeObj = { 128 tealium_event: "Issue", 129 event_action: "view", 130 event_data: entry.target.innerHTML, 131 target_url: entry.target.getAttribute("href"), 132 page_name: page_name, 133 }; 134 window.utag.link(ausgabeObj); 135 } 136 }); 137 } 138 const issueBtnsContainers = document.getElementsByClassName( 139 "asmb-issue-slider-button-container" 140 ); 141 for (let i = 0; i < issueBtnsContainers.length; i++) { 142 const issueBtns = issueBtnsContainers[i].querySelectorAll("a"); 143 for (let j = 0; j < issueBtns.length; j++) { 144 issueBtnsObserver.observe(issueBtns[j]); 145 issueBtns[j].addEventListener("click", function (event) { 146 let ausgabeObj = { 147 tealium_event: "Issue", 148 event_action: "click", 149 event_data: issueBtns[j].innerHTML, 150 target_url: issueBtns[i].getAttribute("href"), 151 page_name: page_name, 152 }; 153 window.utag.link(ausgabeObj); 154 }); 155 } 156 } 157 const heroSlidesObserver = new IntersectionObserver( 158 heroSlidesCallback, 159 options 160 ); 161 function heroSlidesCallback(entries, heroSlidesObserver) { 162 entries.forEach((entry) => { 163 if (entry.isIntersecting) { 164 console.log(entry.target); 165 let heroSlidesObj = { 166 tealium_event: "hero_banner", 167 event_action: "view", 168 target_url: entry.target.getAttribute("href"), 169 teaser_title: 170 entry.target.querySelector(".teaser-title").innerHTML, 171 page_name: page_name, 172 }; 173 window.utag.link(heroSlidesObj); 174 } 175 }); 176 } 177 const heroSlides = document.querySelectorAll(".hero-slider-btn"); 178 for (let i = 0; i < heroSlides.length; i++) { 179 heroSlidesObserver.observe(heroSlides[i]); 180 heroSlides[i].addEventListener("click", function (event) { 181 let heroSlideObj = { 182 tealium_event: "hero_banner", 183 event_action: "click", 184 target_url: heroSlides[i].getAttribute("href"), 185 teaser_title: heroSlides[i].querySelector(".teaser-title div h1") 186 .innerHTML, 187 page_name: page_name, 188 }; 189 window.utag.link(heroSlideObj); 190 }); 191 } 192 } else if (myData.is_post) { 193 const iosAd = document.querySelector(".ios-ad-banner"); 194 if (iosAd) { 195 console.log("iOS Ad banner found:", iosAd); // Confirm that iosAd is successfully selected 196 } else { 197 console.log("iOS Ad banner not found, check your selector!"); // Error handling if iosAd is null 198 } 199 iosAd.addEventListener("click", function (event) { 200 console.log("Ad clicked", event); //Log the click event object 201 let iosAdClickEvent = { 202 tealium_event: "ios_ad_click", 203 event_action: "click", 204 event_content: "iOS Ad", 205 page_name: page_name, 206 }; 207 console.log("Click event data", iosAdClickEvent); // Log the data being sent on click 208 window.utag.link(iosAdClickEvent); 209 }); 210 const iosAdObserver = new IntersectionObserver(iosAdCallback, options); 211 function iosAdCallback(entries, iosAdObserver) { 212 entries.forEach((entry) => { 213 console.log("IntersectionObserver entry:", entry); // Log each entry object from IntersectionObserver 214 if (entry.isIntersecting) { 215 console.log("Ad is in view", entry.target); // Log the target that has intersected the viewport 216 console.log(entry.target); 217 let iosAdObj = { 218 tealium_event: "ios_ad_view", 219 event_action: "view", 220 page_name: page_name, 221 }; 222 console.log("View event data", iosAdObj); // Log the data being sent on view 223 window.utag.link(iosAdObj); 224 } 225 }); 226 } 227 iosAdObserver.observe(iosAd); 228 const currentIssueObserver = new IntersectionObserver( 229 currentIssueCallback, 230 options 231 ); 232 function currentIssueCallback(entries, currentIssueObserver) {
233 entries.forEach((entry) => { 234 if (entry.isIntersecting) { 235 console.log(entry.target); 236 let currentIssueObj = { 237 tealium_event: "current_issue", 238 event_action: "view", 239 target_url: entry.target.getAttribute("href"), 240 teaser_title: entry.target.querySelector( 241 ".asmb-current-issue-content h1" 242 ).innerHTML, 243 page_name: page_name, 244 }; 245 window.utag.link(currentIssueObj); 246 } 247 }); 248 } 249 // const currentIssue = document.querySelector("#current-issue-btn"); 250 // currentIssueObserver.observe(currentIssue) 251 // currentIssue.addEventListener("click", function (event) { 252 // let currentIssueObj = { 253 // "tealium_event": "current_issue", 254 // "event_action": "click", 255 // "target_url": currentIssue.getAttribute("href"), 256 // "teaser_title": document.querySelector(".asmb-current-issue-content h1").innerHTML, 257 // "page_name": page_name, 258 // } 259 // window.utag.link(currentIssueObj) 260 // }) 261 } 262 } 263 }, 100); 264});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.