PageSourceSearch

https://www.mb-capital-services.de/masterlayout/scripts/datalayer_tracking.js

js mb-capital-services.de collected 2026-10-04 15:03:35 UTC 2,849 bytes, 104 lines download raw bytes

1console.log("datalayer_tracking script has been loaded");
2
3function objectsEqual(obj1, obj2) {
4  const keys1 = Object.keys(obj1);
5  const keys2 = Object.keys(obj2);
6
7  if (keys1.length !== keys2.length) {
8    return false;
9  }
10
11  for (let i = 0; i < keys1.length; i++) {
12    const key = keys1[i];
13    if (!obj2.hasOwnProperty(key)) {
14      return false;
15    }
16  }
17
18  return true;
19}
20
21/**
22 * @param elementOrSelector {string | Element}
23 * @param data {{event:string}}
24 */
25function trackEvent(data) {
26  /**
27   *  Check https://forte-digital.atlassian.net/wiki/spaces/MBN/pages/4292477215/Event+Tracking for event documentation */
28
29  const defaultKeys = ["system_loc", "event_url"];
30
31  const validEvents = {
32    email_contact: ["contact_name", "contact_title", ...defaultKeys],
33    page_switch_asia_fl: ["target_url", ...defaultKeys],
34    click_social_media_icon: ["social_platform_name", ...defaultKeys],
35    sidelink: ["sidelink_name", "target_url", ...defaultKeys],
36    video: [
37      "video_title",
38      "video_status",
39      "video_percent",
40      "video_provider",
41      "video_url",
42      ...defaultKeys,
43    ],
44  };
45
46  const validEventKeys = Object.keys(validEvents);
47
48  // const element =
49  //   typeof elementOrSelector === "string"
50  //     ? document.querySelector(elementOrSelector)
51  //     : elementOrSelector;
52
53  // if (!element) {
54  //   console.error(`trackEvent: elementOrSelector '${elementOrSelector}' is invalid`);
55  //   return;
56  // }
57  if (!data) {
58    console.error("trackEvent: data is missing");
59    return;
60  }
61
62  const { event } = data;
63
64  if (!validEventKeys.includes(event)) {
65    console.error(`trackEvent: '${event}' is not a valid event`);
66    return;
67  }
68
69  const eventDataKeys = { ...data };
70  delete eventDataKeys.event;
71
72  const validDataKeys = validEvents[event].reduce((prev, cur) => ({ [cur]: cur, ...prev }), {});
73
74  if (!objectsEqual(eventDataKeys, validDataKeys)) {
75    console.warn("trackEvent: data is not matching", {
76      //element,
77      expectedDataKeys: validEvents[event],
78      receivedDataKeys: Object.keys(eventDataKeys),
79    });
80  }
81
82  window.dataLayer = window.dataLayer || [];
83  dataLayer.push(data);
84  console.log("trackEvent: pushed data", { dataLayer, data });
85
86  // console.log(`trackEvent: registered`, { elementSelector: elementOrSelector, data, element });
87
88  // const TRACKED_EVENT = "tracked_event";
89
90  // if (element.getAttribute(TRACKED_EVENT) === event) {
91  //   console.warn(`trackEvent: already tracking event '${event}' on element, skipping`, {
92  //     element,
93  //   });
94  //   return;
95  // }
96
97  // element.addEventListener("click", () => {
98  //   window.dataLayer = window.dataLayer || [];
99  //   dataLayer.push(data);
100  //   console.log("trackEvent: click detected, pushed data", { dataLayer, element, data });
101  // });
102
103  // element.setAttribute(TRACKED_EVENT, event);
104}

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.