PageSourceSearch

https://hvidbjergbank.dk/

html hvidbjergbank.dk collected 2026-10-02 18:53:27 UTC 9,630 bytes, 227 lines download raw bytes

1<!doctype html>
2<html lang="en">
3    <head>
4        <meta charset="UTF-8" />
5        
5<script src="https://web.cmp.usercentrics.eu/modules/autoblocker.js"></script>
5
6        
6<script
7            id="usercentrics-cmp"
8            src="https://web.cmp.usercentrics.eu/ui/loader.js"
9            data-settings-id="ckYwpWFuHSjzav"
10            async
11        ></script>
11
12        
12<script>
13            (function setupUsercentricsFlags() {
14                const localHosts = new Set(["localhost", "127.0.0.1"]);
15                const isLocalHost = localHosts.has(window.location.hostname);
16                const disableByEnv = "false" === "true";
17                window.__DISABLE_USERCENTRICS__ = disableByEnv || isLocalHost;
18            })();
19        </script>
19
20        <link rel="icon" type="image/svg+xml" href="/favicon.ico" />
21        <link rel="preconnect" href="https://fonts.googleapis.com" />
22        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
23        <!-- <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&display=swap" rel="stylesheet"> -->
24        <link
25            rel="preload"
26            href="https://fonts.gstatic.com/s/montserrat/v15/JTUSjIg1_i6t8kCHKm459Wlhzg.ttf"
27            as="font"
28            type="font/ttf"
29            crossorigin
30        />
31        <link
32            rel="preload"
33            href="https://fonts.gstatic.com/s/montserrat/v15/JTURjIg1_i6t8kCHKm45_dJE3gnD_g.woff2"
34            as="font"
35            type="font/woff2"
36            crossorigin
37        />
38        <style>
39            @font-face {
40                font-family: "Montserrat";
41                font-style: normal;
42                font-weight: 400;
43                src: url(https://fonts.gstatic.com/s/montserrat/v15/JTUSjIg1_i6t8kCHKm459Wlhzg.ttf)
44                    format("truetype");
45            }
46
47            @font-face {
48                font-family: "Montserrat";
49                font-style: normal;
50                font-weight: 700;
51                src: url(https://fonts.gstatic.com/s/montserrat/v15/JTURjIg1_i6t8kCHKm45_dJE3gnD_g.woff2)
52                    format("woff2");
53            }
54        </style>
55        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
56        <meta
57            name="description"
58            content="Når det handler om dig og dine ønsker. Hvis du overvejer en bank med hjertet på rette sted, er vi altid klar til en uforpligtende snak."
59        />
60        <title>Hvidbjerg Bank</title>
61
62        <!-- Google tag (gtag.js) -->
vendor: 96 bytes, lines 62-65
62
63        <script
64            async
65            src="https://www.googletagmanager.com/gtag/js?id=
65G-SEVPLN82G2
vendor: 78 bytes, lines 65-68
65"
66            data-usercentrics="Google Analytics"
67        ></script>
68        
68<script>
69            window.dataLayer = window.dataLayer || [];
70            function gtag() {
71                dataLayer.push(arguments);
72            }
73
74            const GA_MEASUREMENT_ID = "G-SEVPLN82G2";
75            const IS_USERCENTRICS_DISABLED = window.__DISABLE_USERCENTRICS__ === true;
76            const IS_DEBUG_GA =
77                window.location.hostname !== "hvidbjergbank.dk" &&
78                window.location.hostname !== "www.hvidbjergbank.dk";
79            let hasInitializedGA = false;
80
81            function debugGA(...args) {
82                if (IS_DEBUG_GA) {
83                    console.log("[ga-consent]", ...args);
84                }
85            }
86
87            // Always start from denied; consent updates are applied later.
88            gtag("js", new Date());
89            gtag("consent", "default", {
90                ad_storage: "denied",
91                ad_user_data: "denied",
92                ad_personalization: "denied",
93                analytics_storage: "denied",
94            });
95
96            function initGAOnce() {
97                if (hasInitializedGA) return;
98                hasInitializedGA = true;
99                gtag("config", GA_MEASUREMENT_ID);
100                window.__GA4_ENABLED__ = true;
101                debugGA("Initialized GA config after consent");
102            }
103
104            function setGrantedAndInitGA() {
105                gtag("consent", "update", {
106                    analytics_storage: "granted",
107                });
108                initGAOnce();
109            }
110
111            function isAnalyticsServiceAccepted(service) {
112                const name = (service?.name || "").toLowerCase();
113                const templateId = (service?.templateId || "").toLowerCase();
114                const category = (service?.categorySlug || "").toLowerCase();
115                const isAnalyticsService =
116                    name.includes("google analytics") ||
117                    name.includes("google tag manager") ||
118                    templateId.includes("google-analytics") ||
119                    templateId.includes("google-tag-manager") ||
120                    category.includes("analytics");
121                return (
122                    isAnalyticsService &&
123                    (service?.consent?.status === true ||
124                        service?.consentStatus === true)
125                );
126            }
127
128            function normalizeList(rawValue) {
129                if (Array.isArray(rawValue)) return rawValue;
130                if (rawValue && typeof rawValue === "object") return Object.values(rawValue);
131                return [];
132            }
133
134            function isAnalyticsCategoryAccepted(categories) {
135                return categories.some((category) => {
136                    const slug = (category?.slug || category?.id || "").toLowerCase();
137                    const name = (category?.name || "").toLowerCase();
138                    const isAccepted =
139                        category?.consent?.status === true ||
140                        category?.consentStatus === true ||
141                        category?.status === true ||
142                        category?.isConsentGranted === true;
143                    const isAnalyticsCategory =
144                        slug.includes("analytics") ||
145                        slug.includes("statistics") ||
146                        name.includes("analytics") ||
147                        name.includes("statistik");
148                    return isAccepted && isAnalyticsCategory;
149                });
150            }
151
152            async function checkAnalyticsConsent() {
153                try {
154                    const rawServices = await window.UC_UI?.getServicesBaseInfo?.();
155                    const rawCategories = await window.UC_UI?.getCategoriesBaseInfo?.();
156                    const services = normalizeList(rawServices);
157                    const categories = normalizeList(rawCategories);
158                    const hasServiceConsent = services.some(isAnalyticsServiceAccepted);
159                    const hasCategoryConsent = isAnalyticsCategoryAccepted(categories);
160                    const hasConsent = hasServiceConsent || hasCategoryConsent;
161                    debugGA("Consent check", {
162                        hasConsent,
163                        hasServiceConsent,
164                        hasCategoryConsent,
165                        servicesCount: services.length,
166                        categoriesCount: categories.length,
167                    });
168                    if (hasConsent) {
169                        setGrantedAndInitGA();
170                    }
171                } catch (error) {
172                    debugGA("Consent check failed", error);
173                }
174            }
175
176            function setupConsentListeners() {
177                ["UC_UI_INITIALIZED", "UC_UI_CMP_EVENT", "UC_CONSENT"].forEach(
178                    (eventName) => {
179                        window.addEventListener(eventName, () => {
180                            void checkAnalyticsConsent();
181                        });
182                    },
183                );
184            }
185
186            if (IS_USERCENTRICS_DISABLED) {
187                debugGA("Usercentrics disabled on local host");
188                setGrantedAndInitGA();
189            } else {
190                setupConsentListeners();
191                void checkAnalyticsConsent();
192
193                // Fallback for late-loaded CMP scripts.
194                let retryCount = 0;
195                const consentRetry = setInterval(() => {
196                    retryCount += 1;
197                    void checkAnalyticsConsent();
198                    if (hasInitializedGA || retryCount >= 20) {
199                        clearInterval(consentRetry);
200                        debugGA("Stopped consent polling", {
201                            hasInitializedGA,
202                            retryCount,
203                        });
204                    }
205                }, 500);
206            }
207        </script>
207
208
209        <link href="/css/view.css" rel="stylesheet" />
210        <link href="/css/smartmenu-core.css" rel="stylesheet" />
211        <link href="/css/smartmenu-clean.css" rel="stylesheet" />
212        <link href="/css/main.css" rel="stylesheet" />
213        <link href="/css/style.min.css" rel="stylesheet" />
214        <link href="/css/fontawesome.css" rel="stylesheet" />
215        <link href="/css/index.css" rel="stylesheet" />
216        <link href="/css/layout.css" rel="stylesheet" />
217      
217<script type="module" data-uc-allowed="true" crossorigin src="/assets/index-4rn3rTTF.js"></script>
217
218      <link rel="modulepreload" crossorigin href="/assets/react-vendor-Dw_yU8dF.js">
219      <link rel="modulepreload" crossorigin href="/assets/react-router-vendor-BkIVIVUe.js">
220      <link rel="modulepreload" crossorigin href="/assets/axios-vendor-C_srwYrI.js">
221    </head>
222
223    <body>
224        <div id="root"></div>
225        
225<script src="/js/addon.js" data-uc-allowed="true"></script>
225
226    </body>
227</html>

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.