1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 5 <meta charset="utf-8"/> 6 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2, interactive-widget=resizes-content, viewport-fit=cover"/> 7 8 9 <link rel="preload" href="https://www.weathercrave.co.uk/build/main_redesign.bcb0f22eb3707182578d.css" as="style" fetchpriority="high"/> 10 11 <link rel="preload" href="https://cdn.appconsent.io/loader.js" as="script"/> 12 <link rel="preload" href="https://cdn.hubvisor.io/wrapper/01BYK28ENND8X5G8K0AJ2DPK9E/hubvisor-lcm.js" as="script"/> 13 14 <link rel="preconnect" href="https://c.client-context.hubvisor.io"/> 15 16 17 18 <link rel="preconnect" href="https://securepubads.g.doubleclick.net"> 19 20 21 22 23 <link rel="preload" href="//static5.mclcm.net/lcm2018/fonts/nunito_sans_v8/regular_variable.woff2" as="font" 24 type="font/woff2" crossorigin 25 fetchpriority="high" 26 > 27 <link rel="preload" href="//static5.mclcm.net/lcm2018/fonts/nunito_sans_v8/italic_variable.woff2" as="font" 28 type="font/woff2" crossorigin 29 fetchpriority="high" 30 > 31 <link rel="preload" href="https://www.weathercrave.co.uk/build/services.bf5b1645d38003de9b6b.css" as="style"/> 32 <link rel="preload" href="https://www.weathercrave.co.uk/build/home_section.d2660212f9c187badf1e.css" as="style"/> 33 34 35 <title>About METEO CONSULT - The Weather Crave</title> 36<meta name="description" lang="en" content="Overview of METEO CONSULT, France's first private company specializing in weather forecasts and studies, operating through various distribution channels."/> 37<meta name="robots" content="index, follow"/> 38<link rel="canonical" href="https://www.weathercrave.co.uk/weather-services/info/about-meteo-consult"/> 39 <link rel="alternate" href="https://www.lachainemeteo.com/services-meteo/info/a-propos-de-meteo-consult" hreflang="fr" /> 40 <link rel="alternate" href="https://www.lachainemeteo.ca/services-meteo/info/a-propos-de-meteo-consult" hreflang="fr-ca" /> 41 <link rel="alternate" href="https://www.lachainemeteo.be/services-meteo/info/a-propos-de-meteo-consult" hreflang="fr-be" /> 42 <link rel="alternate" href="https://www.lachainemeteo.ch/services-meteo/info/a-propos-de-meteo-consult" hreflang="fr-ch" /> 43 <link rel="alternate" href="https://www.weathercrave.com/weather-services/info/about-meteo-consult" hreflang="x-default" /> 44 <link rel="alternate" href="https://www.weathercrave.co.uk/weather-services/info/about-meteo-consult" hreflang="en-gb" /> 45 <link rel="alternate" href="https://www.weathercrave.ca/weather-services/info/about-meteo-consult" hreflang="en-ca" /> 46 <link rel="alternate" href="https://www.meteoconsult.es/servicios-meteo/info/acerca-de-meteo-consult" hreflang="es" /> 47 <link rel="alternate" href="https://www.meteoconsult.it/servizi-meteo/info/a-proposito-di-meteo-consult" hreflang="it" /> 48 49 50 51 52<meta property="og:site_name" content="Weather Crave"/> 53<meta property="og:title" content="About METEO CONSULT - The Weather Crave"/> 54<meta property="og:type" content="website"/> 55<meta property="og:url" content="https://www.weathercrave.co.uk/weather-services/info/about-meteo-consult"/> 56<meta property="og:description" content="Overview of METEO CONSULT, France's first private company specializing in weather forecasts and studies, operating through various distribution channels."/> 57 <meta property="og:image" content="https://static5.mclcm.net/lcm2018/int/logo_lcm_partage.jpg"/> 58 59<meta name="twitter:card" content="summary_large_image"/> 60<meta name="twitter:site" content="@lachainemeteo"/> 61 <meta name="twitter:creator" content="@lachainemeteo"> 62<meta name="twitter:title" content="About METEO CONSULT - The Weather Crave"/> 63<meta name="twitter:description" content="Overview of METEO CONSULT, France's first private company specializing in weather forecasts and studies, operating through various distribution channels."/> 64 65 66 <meta property="fb:app_id" content="263364420578"/> 67
68<script type="application/ld+json"> 69 { 70 "@context": "http://schema.org", 71 "@type": "Organization", 72 "name": "Weather Crave", 73 "url": "https://www.weathercrave.co.uk/weather-forecast-united-kingdom/weather-forecast-united-kingdom-today", 74 "logo": 75 { 76 "@context": "http://schema.org", 77 "@type": "ImageObject", 78 "url": "https://static5.mclcm.net/lcm2018/en/common/logo.png" 79 } 80 } 81 82</script>
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
99<script> 100 101 102 window.lcm = {}; 103 window.googletag = window.googletag || {cmd: []};window.logMeasure = () => { 104}; 105window.logMeasureEnd = () => { 106}; 107window.stopMeasurements = () => { 108}; 109 110 111const builtFilesMap = new Map([['menu_core', 'https://www.weathercrave.co.uk/build/menu_core.e8881768343ec6fc33e2.js'],['panel_manager', 'https://www.weathercrave.co.uk/build/panel_manager.836ef45b083253b332ea.js'],['menu_client', 'https://www.weathercrave.co.uk/build/menu_client.e6f7f783152e10b0adb8.js'],['menu_small', 'https://www.weathercrave.co.uk/build/menu_small.218d0e08a9e17796974e.js'],['popin', 'https://www.weathercrave.co.uk/build/popin.72634c394f352a36920b.js'],['popin_store', 'https://www.weathercrave.co.uk/build/popin_store.3e33f643d4103bf7e4aa.js'],['slider_store', 'https://www.weathercrave.co.uk/build/slider_store.31b5fc2b0f5305ffde3a.js'],['cookies', 'https://www.weathercrave.co.uk/build/cookies.3ef71970b4b16e2eb6f2.js'],['share', 'https://www.weathercrave.co.uk/build/share.18d4d459d4bcfb086379.js'],['favorite', 'https://www.weathercrave.co.uk/build/favorite.6a3c97d4c2aafdde3db3.js'],['user', 'https://www.weathercrave.co.uk/build/user.a84220064da9b811e50a.js'],['shortcut', 'https://www.weathercrave.co.uk/build/shortcut.2f0cc7b0092917dca66d.js'],['bookmark', 'https://www.weathercrave.co.uk/build/bookmark.18c1bd0445e6c4659a81.js'],['slider', 'https://www.weathercrave.co.uk/build/slider.43f075b1c6c2e86040a9.js'],['historical', 'https://www.weathercrave.co.uk/build/historical.0dbe5280551188c16285.js'],['video', 'https://www.weathercrave.co.uk/build/video.8bc950cc72f37f1f4a88.js'],['alert', 'https://www.weathercrave.co.uk/build/alert.677954e727bd5c2f7a1e.js'],['fonts', 'https://www.weathercrave.co.uk/build/fonts.c8a52773dab1a212109c.js'],['device', 'https://www.weathercrave.co.uk/build/device.3af0138b6fbbd68e6a2b.js'],['perf_client', 'https://www.weathercrave.co.uk/build/perf_client.9ee097c91f1d974ae928.js'],['autocomplete', 'https://www.weathercrave.co.uk/build/autocomplete.75dbc15609bd675ce6d0.js'],['autocomplete_header', 'https://www.weathercrave.co.uk/build/autocomplete_header.3ff865a383818d56735c.js'],['autocomplete_section', 'https://www.weathercrave.co.uk/build/autocomplete_section.a7cb17f18eaabd4562df.js'],['timetable', 'https://www.weathercrave.co.uk/build/timetable.11ff0cff6d8ef985839a.js'],['reporter', 'https://www.weathercrave.co.uk/build/reporter.aa20337c3d1e2053f534.js'],['video_news', 'https://www.weathercrave.co.uk/build/video_news.b56281473f87560846a8.js'],['meteomail', 'https://www.weathercrave.co.uk/build/meteomail.9339f35ff4c196dec264.js'],['top_poi', 'https://www.weathercrave.co.uk/build/top_poi.85c027aea262d34b6493.js'],['geo_history', 'https://www.weathercrave.co.uk/build/geo_history.e8182ab77ad6a0015deb.js'],['top_section', 'https://www.weathercrave.co.uk/build/top_section.130525c25bd8a4b8ba9e.js'],['top_section_abroad', 'https://www.weathercrave.co.uk/build/top_section_abroad.5f81674ff79b99a96f03.js'],['top_section_main_place', 'https://www.weathercrave.co.uk/build/top_section_main_place.e1157c7cd11de2a570b0.js'],['main_video', 'https://www.weathercrave.co.uk/build/main_video.c36c51f8e119e9e380a6.js'],['serie_video', 'https://www.weathercrave.co.uk/build/serie_video.2db18b4fa379e622df68.js'],['near_cities_forecast', 'https://www.weathercrave.co.uk/build/near_cities_forecast.9ae7e1ff45b4900a2863.js'],['live_core', 'https://www.weathercrave.co.uk/build/live_core.5da167fa27827d45c555.js'],['live_5min', 'https://www.weathercrave.co.uk/build/live_5min.95838bec756d1afeb032.js'],['live_graph', 'https://www.weathercrave.co.uk/build/live_graph.232b659f25296e8de125.js'],['live_nav', 'https://www.weathercrave.co.uk/build/live_nav.24a1ab167596e4908fc9.js'],['edito_health', 'https://www.weathercrave.co.uk/build/edito_health.c34788a2b19e1c1fa8f5.js'],['edito_beach', 'https://www.weathercrave.co.uk/build/edito_beach.2640cf6b0e9b31e01867.js'],['edito_climate', 'https://www.weathercrave.co.uk/build/edito_climate.b93fe52bb53cbd60ae8f.js'],['climate_info', 'https://www.weathercrave.co.uk/build/climate_info.daa1144d8a9a09baed29.js'],['comparator_info', 'https://www.weathercrave.co.uk/build/comparator_info.16f571412525932fe723.js'],['edito_live', 'https://www.weathercrave.co.uk/build/edito_live.ee6ab40449af91e5b9bc.js'],['ias', 'https://www.weathercrave.co.uk/build/ias.a438a7ea70ec35b40c1b.js'],['gam', 'https://www.weathercrave.co.uk/build/gam.f6e4a97c6cdc2bd37b9f.js'],['cmp', 'https://www.weathercrave.co.uk/build/cmp.94fac8b9686b06797c7f.js'],['ppid', 'https://www.weathercrave.co.uk/build/ppid.b5948df9f3
1111e32057107.js'],['oneplusx', 'https://www.weathercrave.co.uk/build/oneplusx.2cd5bde319a541983478.js'],['mc_lcm_map', 'https://www.weathercrave.co.uk/build/mc_lcm_map.a017605a77bbf3fb100d.js'],['user_agent', 'https://www.weathercrave.co.uk/build/user_agent.e0f288e54dedc0043f1d.js'],['weather_news', 'https://www.weathercrave.co.uk/build/weather_news.0005a5460a026f62c12d.js'],['log_ajax', 'https://www.weathercrave.co.uk/build/log_ajax.8ec0ab058c33fcef77b0.js'],['refresh', 'https://www.weathercrave.co.uk/build/refresh.2c8fddcd7643e275cc46.js'],['profile_user', 'https://www.weathercrave.co.uk/build/profile_user.5e959935197272509847.js'],['favorites_user', 'https://www.weathercrave.co.uk/build/favorites_user.a6bf6d1455ff34663bc4.js'],['meteomails_user', 'https://www.weathercrave.co.uk/build/meteomails_user.31d6cfe0d16ae931b73c.js'],['pictures_user', 'https://www.weathercrave.co.uk/build/pictures_user.8607b8d2486a6d6adce6.js'],['subscriptions_user', 'https://www.weathercrave.co.uk/build/subscriptions_user.4dd4ae2966201cecb814.js'],['means_payment_user', 'https://www.weathercrave.co.uk/build/means_payment_user.b483766fab8156d2fd63.js'],['login_user', 'https://www.weathercrave.co.uk/build/login_user.0e2b4965098c096a4b85.js'],['paypal', 'https://www.weathercrave.co.uk/build/paypal.636aade3c06812f8eabd.js'],['form_element', 'https://www.weathercrave.co.uk/build/form_element.8ba7974840f6ca1e84b1.js'],['check_password', 'https://www.weathercrave.co.uk/build/check_password.b973bd664b2f7c643393.js'],['collapse_list', 'https://www.weathercrave.co.uk/build/collapse_list.8106d888b1eade1e686f.js'],['top_beach', 'https://www.weathercrave.co.uk/build/top_beach.a67995d53a461a77d7c9.js'],['dataset_filter_items', 'https://www.weathercrave.co.uk/build/dataset_filter_items.43c918d8b51c64e4760e.js'],['description_serie', 'https://www.weathercrave.co.uk/build/description_serie.1c72ad8d2f2f874ae23c.js'],['media_reporter', 'https://www.weathercrave.co.uk/build/media_reporter.9139c185e96ca914ef88.js'],['popin_vip_teaser', 'https://www.weathercrave.co.uk/build/popin_vip_teaser.05d605e4535527667470.js'],['utiq', 'https://www.weathercrave.co.uk/build/utiq.a5e03dccb82810a0757a.js'],['webcam', 'https://www.weathercrave.co.uk/build/webcam.b00e053832f7d5b45506.js'],['table_hover', 'https://www.weathercrave.co.uk/build/table_hover.094d6d0777f9099b9bff.js'],['table_scroll', 'https://www.weathercrave.co.uk/build/table_scroll.310af745c1e6a1fb851e.js'],['remarkable_phenomena', 'https://www.weathercrave.co.uk/build/remarkable_phenomena.cc26cc7e2e319a9dff0e.js'],['legendTrip', 'https://www.weathercrave.co.uk/build/legendTrip.a119126e5fb4740db7a5.js'],['vod', 'https://www.weathercrave.co.uk/build/vod.772af801a9cee9a47211.js'],['hour_by_hour_day', 'https://www.weathercrave.co.uk/build/hour_by_hour_day.15c5af479b36e3b1d8dd.js'],['hour_by_hour', 'https://www.weathercrave.co.uk/build/hour_by_hour.3056fe3521e638df3501.js'],['mails_user', 'https://www.weathercrave.co.uk/build/mails_user.f43a275e516240bd30cb.js'],['popin_mails_user', 'https://www.weathercrave.co.uk/build/popin_mails_user.8e86f9b7133ace150c49.js'],['alertmail', 'https://www.weathercrave.co.uk/build/alertmail.9339f35ff4c196dec264.js'],['flash', 'https://www.weathercrave.co.uk/build/flash.1a8dee6cc026cb5f3740.js'],['menu_alert', 'https://www.weathercrave.co.uk/build/menu_alert.1ccbd46613154f7db3fa.js']]); 112class BuiltFilesAccessor { 113 #a; 114 115 constructor(e) { 116 this.#a = e ?? new Map 117 } 118 119 getFileName(e) { 120 let s = this.#a.get(e); 121 if (!s) throw Error(`Can't find "${e}" in built list.`); 122 return s 123 } 124}const filesAccessor = new BuiltFilesAccessor(builtFilesMap);builtFiles = {getFileName: filesAccessor.getFileName.bind(filesAccessor)};function _needsAuth(a) { 125 try { 126 if (/^https?:\/\//i.test(a)) return /^(https?:\/\/)(phl-|pp-)/i.test(a); 127 const b = a.split('?')[0]; 128 if (/\/(phl-|pp-)\//i.test(b) || /^(phl-|pp-)\//i.test(b)) return true; 129 } catch (_) {} 130 return false; 131} 132 133class FetchWrapper { 134 #a = new Map; 135 #b = window.location.origin; 136 137 async fetch(e, t = {}) { 138 let n = !t.method || "GET" === t.method.toUpperCase(); 139 if (n && this.#a.has(e)) { 140 return this.#a.get(e).then(e => e.clone()); 141 } 142 let o = n ? "GET" : t.method.toUpperCase(), 143 a = t.body || "", 144 s = n ? e : `${o}:${e}:${a instanceof FormData ? "" : a}`;
145 if (!n && this.#a.has(s)) { 146 return this.#a.get(s).then(e => e.clone()); 147 } 148 (t.headers || !n) && this.#c(e, o, t.headers); 149 let c = { 150 mode: "cors", 151 method: o, 152 ...t 153 }; 154 "GET" === o && void 0 === c.credentials && (c.credentials = _needsAuth(e) ? "include" : "omit"); 155 let i = fetch(e, c).finally(() => { 156 this.#a.delete(s) 157 }); 158 this.#a.set(s, i); 159 let r = await i; 160 if (!r.ok) { 161 throw Error(r.status); 162 } 163 return r 164 } 165 166 #c(e, t, n) { 167 if (!e.startsWith(this.#b)) { 168 let o = !["GET", "POST", "HEAD"].includes(t); 169 if (!o && n) { 170 let a = new Headers(n), s = a.get("content-type")?.toLowerCase(); 171 o = s && ![ 172 "text/plain", 173 "multipart/form-data", 174 "application/x-www-form-urlencoded" 175 ].includes(s) 176 || Array.from(a.keys()).some( 177 e => ![ 178 "accept", 179 "accept-language", 180 "content-language", 181 "content-type" 182 ].includes(e.toLowerCase()) 183 ); 184 } 185 o && console.warn( 186 `%c[PREFLIGHT] %c${t} ${e}`, 187 "color:red;font-weight:bold", 188 "" 189 ); 190 } 191 } 192} 193 194const fw = new FetchWrapper; 195window.lcm.fetch = fw.fetch.bind(fw);class Logger { 196 static #a = {success: 1, add: 1, info: 1, user: 1, deprecated: 2, warning: 2, error: 3, errorLog: 4}; 197 static #b = { 198 success: {str: "s", c: "#292929", bgc: "#6BEC7C"}, 199 add: {str: "a", c: "#292929", bgc: "#6BEC7C"}, 200 info: {str: "i", c: "#292929", bgc: "#00b0b0"}, 201 user: {str: "u", c: "#fff", bgc: "#a00"}, 202 deprecated: {str: "d", c: "#fff", bgc: "#ed7d04"}, 203 warning: {str: "w", c: "#fff", bgc: "#ed7d04"}, 204 error: {str: "e", c: "#fff", bgc: "#f00"}, 205 errorLog: {str: "e", c: "#fff", bgc: "#f00"} 206 }; 207 #c; 208 #d = JSON.parse(sessionStorage.getItem("logDebugEnabled")) || !1; 209 #e; 210 211 constructor(e, r) { 212 this.#c = e, this.#e = r, !1 === this.#d && /log/.test(new
212URLSearchParams(window.location.search).get("extra")) && (sessionStorage.setItem("logDebugEnabled", 1), this.#d = !0) 213 } 214 215 log({module: e, type: r = "info", data: g = []}) { 216 let o = Logger.#a[r] || 0; 217 if (!this.#d && o < this.#c) return; 218 let c = Logger.#b[r], t = new Date, 219 l = `${t.getHours()}:${t.getMinutes()}:${t.getSeconds()}.${t.getMilliseconds()}`, 220 a = [`%c${l}%c${e}%c${c.str}`, "color: #000; padding: 1px 3px; border-radius: 3px 0 0 3px; background: #cecece;", "color: #fff; padding: 1px 3px; border-radius: 3px 0 0 3px; background: #0000bd;", `color: ${c.c}; padding: 1px 3px; border-radius: 0 3px 3px 0; background: ${c.bgc};`]; 221 console.log.apply(console, a.concat(g)), o >= this.#c && this.#f({module: e, data: g, type: r}) 222 } 223 224 #f({module: e, data: r, type: g}) { 225 try { 226 window.lcm && window.lcm.logAjax && "function" == typeof window.lcm.logAjax.log ? window.lcm.logAjax.log({ 227 url: window.location.href, 228 module: e, 229 type: g, 230 data: JSON.stringify(r), 231 ua: navigator.userAgent, 232 logUrl: this.#e 233 }) : console.error("LogAjax module not ready.") 234 } catch (o) { 235 console.error("Problem while logging to ajax:", o) 236 } 237 } 238}const loggerInstance = new Logger( 239 4, 240 'https://www.weathercrave.co.uk/ajax/log' 241); 242_log = ({module, type = 'info', data = []}) => { 243 loggerInstance.log({module, type, data}); 244};class Evt { 245 #a = new Set; 246 #b = "lcmc_"; 247 version = "2.0.0"; 248 249 listen(e, t) { 250 this.#a.has(e) ? t() : document.addEventListener(this.#b + e, t, {once: !0}) 251 } 252 253 dispatch(e) { 254 "function" == typeof _log && _log({module: "Evt", type: "success", data: e}), this.#a.add(e); 255 let t = new Event(this.#b + e); 256 document.dispatchEvent(t) 257 } 258}window.evt = new Evt, document.addEventListener("DOMContentLoaded", () => { 259 window.evt.dispatch("DOMContentLoaded") 260});class ScriptLoader { 261 #a = {}; 262 263 loadScript(e) { 264 let r; 265 try { 266 r = builtFiles.getFileName(e) 267 } catch (t) { 268 console.error("Error fetching built filename:", t, e); 269 return 270 } 271 if (e in this.#a) return; 272 this.#a[e] = !0; 273 let a = document.createElement("script"); 274 a.async = !0, a.src = r; 275 let d = /\.min$/.test(e) ? `${e.slice(0, -4)}Loaded` : `${e}Loaded`; 276 a.onload = () => { 277 window.evt.dispatch(d) 278 }, a.onerror = () => { 279 console.error("Error loading file:", e, r), delete this.#a[e] 280 }, document.head.appendChild(a) 281 } 282}const loaderInstance = new ScriptLoader;window.loadScriptBuild = loaderInstance.loadScript.bind(loaderInstance);const isHoverEnable = () => !window.matchMedia("(any-hover: none)").matches;window.isHoverEnable = () => !window.matchMedia("(any-hover: none)").matches;class Breakpoint { 283 #a = [{id: "xxxl", mediaQuery: "(min-width: 2530px)"}, {id: "xxl", mediaQuery: "(min-width: 1440px)"}, { 284 id: "xl", 285 mediaQuery: "(min-width: 1280px)" 286 }, {id: "l", mediaQuery: "(min-width: 1000px)"}, {id: "m", mediaQuery: "(min-width: 768px)"}, { 287 id: "s", 288 mediaQuery: "(min-width: 576px)" 289 }, {id: "xs", mediaQuery: "(min-width: 360px)"}, {id: "xxs", mediaQuery: "(min-width: 320px)"}]; 290 #b = null; 291 #c = 50; 292 #d; 293 294 constructor() { 295 this.#d = this.#a[this.#a.length - 1].id 296 } 297 298 #e() { 299 !this.#b && (this.#b = setTimeout(() => { 300 this.#f(), this.#b = null 301 }, this.#c)) 302 } 303 304 #f(e = !1) { 305 let i = this.#d; 306 for (let t of this.#a) if (window.matchMedia(t.mediaQuery).matches) { 307 i = t.id; 308 break 309 } 310 let r = this.#d; 311 this.#d = i, !1 === e && r !== this.#d && (document.dispatchEvent(new CustomEvent("breakpointChange", { 312 detail: { 313 size: this.#d, 314 previous: r 315 } 316 })), document.dispatchEvent(new CustomEvent(`breakpoint${i.toUpperCase()}`, {detail: {size: this.#d}}))) 317 } 318 319 load() { 320 let e = e => { 321 e.preventDefault(), this.#e() 322 }; 323 window.addEventListener("resize", e, !1), window.addEventListener("orientationchange", e, !1), this.#f(!0), evt.dispatch("breakpoint") 324 } 325 326 getCurrent() { 327 return this.#d 328 } 329}(() => {
330 let e = new Breakpoint; 331 window.lcm.breakpoint = e, e.load() 332})();class Lazyload { 333 #a = null; 334 335 #b(target) { 336 let functionPath = target.dataset.onload; 337 if (functionPath) try { 338 let func = window[functionPath] || eval(`window.${functionPath}`); 339 "function" == typeof func ? func.call(target) : console.error(`Lazyload: Function not found or non-callable ${functionPath}`, target) 340 } catch (e) { 341 console.error(`Lazyload: Error executing (${functionPath}):`, e, target) 342 } 343 } 344 345 #c = (a, t) => { 346 a.forEach(a => { 347 if (!a.isIntersecting) return; 348 let e = a.target; 349 e.dataset.srcset && (e.srcset = e.dataset.srcset), e.dataset.src && (e.src = e.dataset.src), e.dataset.poster && (e.poster = e.dataset.poster), e.dataset.onload && (e.dataset.evt ? evt.listen(e.dataset.evt, () => { 350 this.#b(e) 351 }) : this.#b(e)), e.classList.remove("lazyload"), _log({ 352 module: "lazyload", 353 data: e 354 }), e.classList.add("lazyloaded"), t.unobserve(e) 355 }) 356 }; 357 358 constructor() { 359 evt.listen("DOMContentLoaded", () => { 360 this.checkLazyload() 361 }), evt.dispatch("lazyload") 362 } 363 364 addLazyload(a, t = null) { 365 let e = { 366 threshold: a.dataset.threshold ? parseFloat(a.dataset.threshold) : 0, 367 rootMargin: t?.rootMargin || "0px" 368 }; 369 a.dataset.root && (e.root = document.getElementById(a.dataset.root) || null); 370 let o = new IntersectionObserver(this.#c, e); 371 o.observe(a) 372 } 373 374 checkLazyload() { 375 document.querySelectorAll(".lazyload").forEach(a => { 376 this.addLazyload(a) 377 }) 378 } 379}window.lcm.lazyload = new Lazyload;class Device { 380 static #a = "mobile"; 381 static #b = "tablet"; 382 static #c = "desktop"; 383 #d = ""; 384 385 constructor() { 386 this.load(), "" === this.#d && this.#e(), _log({ 387 module: "Device", 388 type: "info", 389 data: {deviceType: this.getDeviceType()} 390 }) 391 } 392 393 load() { 394 evt.listen("breakpoint", () => { 395 this.#e(), _log({ 396 module: "Device", 397 type: "info", 398 data: {deviceType: this.getDeviceType()} 399 }), evt.dispatch("deviceType") 400 }) 401 } 402 403 getDeviceType() { 404 return this.#d 405 } 406 407 isMobile() { 408 return this.#d === Device.#a 409 } 410 411 isTablet() { 412 return this.#d === Device.#b 413 } 414 415 isDesktop() { 416 return this.#d === Device.#c 417 } 418 419 #e() { 420 let e = window.lcm.breakpoint.getCurrent(), i; 421 i = ["xxs", "xs", "s"].includes(e) ? Device.#a : "m" !== e || window.isHoverEnable() ? Device.#c : Device.#b, this.#d = i 422 } 423}window.lcm.device = new Device;class NodeSize { 424 #a = new Map; 425 #b = new Map; 426 427 listen(e) { 428 if (!e) return console.error("nodeSize : can't find node"), Promise.reject(Error("Node not found")); 429 if (this.#a.has(e)) return this.#a.get(e); 430 let t = new Promise(t => { 431 let s = new ResizeObserver(i => { 432 let n = i[0].contentRect, r = {width: n.width, height: n.height}; 433 s.unobserve(e), this.#b.delete(e), t(r) 434 }); 435 this.#b.set(e, s), s.observe(e) 436 }); 437 return this.#a.set(e, t), t 438 } 439}window.nodeSize = new NodeSize;document.addEventListener("DOMContentLoaded", () => { 440 window.ajaxLogUrl = 'https://www.weathercrave.co.uk/ajax/log'; 441 loadScriptBuild('log_ajax'); 442});(() => { 443 class CmpShort { 444 445 constructor() { 446 this._uuid = null; 447 } 448 449 _setCookieSession(name, value) { 450 _log({module: 'CMP', data: ['set cookie', name, value]}); 451 const domain = '.weathercrave.co.uk'; 452 const path = '/'; 453 let data = value; 454 const date = new Date(); 455 date.setTime(date.getTime() + (364 * 86400000)); 456 document.cookie = name + '=' + data 457 + '; domain=' + domain 458 + '; expires=' + date.toUTCString() 459 + '; path=' + path; 460 } 461 462 _getCookieSession(name) { 463 _log({module: 'CMP', data: `get cookie : ${name}`}); 464 const oRegex = new RegExp('[; ]?' + name + '=([^;]*)'); 465 return ((' ' + document.cookie).match(oRegex)) ? RegExp["$1"] : null; 466 } 467 468 getUuid() { 469 return this._uuid; 470 } 471 472 _setCmpUuid() { 473 let cmp_uuid = this._getCookieSession('cmp_v2_uuid'); 474 _log({module: 'CMP', data: `cmp_uuid : ${cmp_uuid}`}); 475 if (cmp_uuid === null) { 476 cmp_uuid = `cmp${((new Date()).getTime() + Math.random())}`; 477 _log({module: 'CMP', data: `cmp_uuid : ${cmp_uuid}`}); 478 this._setCookieSession('cmp_v2_uuid', cmp_uuid); 479 } 480 481 this._uuid = cmp_uuid; 482 } 483 484 load() { 485 this._setCmpUuid(); 486 } 487 } 488 489 window.lcm.cmpShort = new CmpShort(); 490 window.lcm.cmpShort.load(); 491 492 window.loadCmpScripts = () => { 493 window.configSFBXAppConsent = { 494 appKey: 'e2486122\u002Dc57c\u002D4f0f\u002Daee5\u002Dfbdf7f3b2704', 495 forceGDPRApplies: true, 496 uuid: window.lcm.cmpShort.getUuid(), 497 callbacks: { 498 init: (error, state) => { 499 _log({module: "CMP", data: [state, error]}) 500 }, 501 show: (error) => { 502 if (error !== null) { 503 _log({module: "CMP", data: ["show", error], type: 'warning'}) 504 } 505 }, 506 listener: (tcData, success) => { 507 if (tcData !== null) { 508 _log({module: "CMP", data: [tcData.eventStatus]}) 509 } 510 511 evt.listen('cmpLoaded', () => { 512 window.lcm.cmp.check(tcData, success) 513 }); 514 } 515 } 516 }; 517 logMeasure('cmp', 'file'); 518 const sCMP = document.createElement('script'); 519 sCMP.src = 'https://cdn.appconsent.io/loader.js'; 520 sCMP.async = true; 521 document.head.appendChild(sCMP); 522 sCMP.onload = () => { 523 logMeasureEnd('cmp', 'file'); 524 _log({module: 'CMP', type: 'success', data: 'cmp.js tier loaded'}); 525 evt.dispatch('cmpScriptTierLoaded'); 526 }; 527 528 loadScriptBuild('cmp'); 529 530 }; 531 532 533})();(() => { 534 class GamPlacement { 535 getInstance() { 536 return new GamPlacement(); 537 } 538 539 constructor() { 540 this.invCode = null; 541 this.slotName = null; 542 this.tag = null; 543 this.sizes = null; 544 this.isAtf = null; 545 this.refreshActive = null; 546 this.refreshDelay = null; 547 this.refreshCurrent = null; 548 this.refreshVisible = null; 549 this.target = null; 550 this.slot = null; 551 this.targeting = null; 552 } 553 } 554 555 window.lcm.newGamPlacement = new GamPlacement(); 556 557 window.lcm.gamConfig = { 558 targeting: [], 559 gamSlots: { 560 desktop: [], 561 tablet: [], 562 mobile: [] 563 }, 564 readyDiv: [], 565 closeAd: {} 566 }; 567 568 window.lcm.ads = {}; 569 570 class Slot { 571 constructor() { 572 this._idGam = null; 573 this._idDom = null; 574 this._bp = null; 575 this._invCode = null; 576 } 577 578 setIdGam(v) { 579 this._idGam = v; 580 } 581 582 setIdDom(v) { 583 this._idDom = v; 584 } 585 586 setBp(v) { 587 this._bp = v; 588 } 589 590 setInvCode(v) { 591 this._invCode = v; 592 } 593 } 594 595 class SlotCollection { 596 constructor() { 597 this.currentBreakpoint = null; 598 this.allowedCollection = {}; 599 this.currentCollection = {}; 600 } 601 602 setConfig(gamConfig) { 603 gamConfig.readyDiv.forEach(div => { 604 div.display_bp.forEach(bp => { 605 if (!this.allowedCollection[bp]) { 606 this.allowedCollection[bp] = {}; 607 } 608 if (!this.allowedCollection[bp][div.tag]) { 609 this.allowedCollection[bp][div.tag] = []; 610 }
611 let obj = new Slot(); 612 obj.setIdGam(div.tag); 613 obj.setIdDom(div.target); 614 obj.setBp(bp); 615 616 617 let device = this._getDeviceByBreakpoint(bp); 618 619 let gamPlacement = null; 620 for (let k = 0; k < gamConfig.gamSlots[device].length; k++) { 621 if (gamConfig.gamSlots[device][k].slotName === div.tag) { 622 gamPlacement = gamConfig.gamSlots[device][k]; 623 break; 624 } 625 } 626 if (gamPlacement !== null) { 627 obj.setInvCode(gamPlacement.invCode); 628 } 629 this.allowedCollection[bp][div.tag].push(obj); 630 631 }); 632 633 }); 634 return this; 635 } 636 637 run(breakpoint) { 638 639 this.currentBreakpoint = breakpoint; 640 this.currentCollection = this.allowedCollection[this.currentBreakpoint]; 641 642 _log({module: 'SlotCollection', data: [`run`, {'allowedCollection': this.allowedCollection}]}); 643 644 return this; 645 } 646 647 getSlotsByGamId() { 648 return this.currentCollection; 649 } 650 651 _getDeviceByBreakpoint(bp) { 652 let device = 'desktop'; 653 if (['xxs', 'xs', 's'].indexOf(bp) !== -1) { 654 device = 'mobile'; 655 } else if (['m'].indexOf(bp) !== -1) { 656 device = 'tablet'; 657 } 658 return device; 659 } 660 661 addSlotVideo(videoConfig, targetId) { 662 ['l', 'm', 's', 'xl', 'xs', 'xxs', 'xxl', 'xxxl'].forEach(bp => { 663 if (!this.allowedCollection[bp]) { 664 this.allowedCollection[bp] = {}; 665 } 666 let device = this._getDeviceByBreakpoint(bp); 667 668 if (!this.allowedCollection[bp][videoConfig[device].idGam]) { 669 this.allowedCollection[bp][videoConfig[device].idGam] = []; 670 } 671 672 let obj = new Slot(); 673 obj.setBp(bp); 674 obj.setInvCode(videoConfig[device]['invCode']); 675 obj.setIdGam(videoConfig[device].idGam); 676 obj.setIdDom(targetId); 677 678 this.allowedCollection[bp][videoConfig[device].idGam].push(obj); 679 }); 680 681 682 } 683 } 684 685 window.lcm.ads.slotCollection = new SlotCollection(); 686 687 class Keywords { 688 constructor() { 689 this._currentDevice; 690 this._globals = []; 691 this._globalsPrebid = []; 692 this._globals1PlusX = []; 693 this._slots = {};//by device 694 this._videos = {}; 695 696 this.setDevice(this._getBreakpointDevice(window.lcm.breakpoint.getCurrent())); 697 } 698 699 setDevice(name) { 700 _log({module: 'Keyword', data: ['set device', name]}); 701 this._currentDevice = name; 702 } 703 704 setGlobals(arr) { 705 _log({module: 'Keyword', data: ['set globals', arr]}); 706 this._globals = this._globals.concat(arr); 707 } 708 709 setGlobalsPrebid(obj) { 710 _log({module: 'Keyword', data: ['set globals prebid', obj]}); 711 for (let k in obj) { 712 this._globalsPrebid.push({key: k, value: obj[k]}); 713 } 714 } 715 716 setGlobals1PlusX(obj) { 717 _log({module: 'Keyword', data: ['set globals 1PlusX', obj]}); 718 for (let k in obj) { 719 this._globals1PlusX.push({key: k, value: obj[k]}); 720 } 721 } 722 _initSlot(slotName) { 723 if (!this._slots[this._currentDevice]) { 724 this._slots[this._currentDevice] = {}; 725 } 726 if (!this._slots[this._currentDevice][slotName]) { 727 this._slots[this._currentDevice][slotName] = []; 728 } 729 } 730 731 delSlot(slotName) { 732 this._initSlot(slotName); 733 this._slots[this._currentDevice][slotName] = []; 734 } 735 736 setSlot(slotName, obj) { 737 _log({module: 'Keyword', data: ['set slot', slotName, obj]}); 738 this._initSlot(slotName); 739 for (let k in obj) { 740 this._slots[this._currentDevice][slotName].push({key: k, value: obj[k]}); 741 } 742 } 743 744 getGlobals() {//call depuis gam 745 return this._globals; 746 } 747 748 getGlobalsPrebid() {//call depuis ias 749 return this._globalsPrebid; 750 } 751 752 // TODO use for HBV only 1plusX et ctx1plusx 753 getGlobals1PlusX() { 754 return this._globals1PlusX; 755 } 756 getBySlotName(slotName) { 757 _log({module: 'Keyword', data: ['get by slot name', slotName]}); 758 try { 759 const test = this._slots[this._currentDevice][slotName]; 760 if (test === undefined) { 761 throw 'slotName not found'; 762 } 763 return test; 764 } catch (e) { 765 return []; 766 } 767 } 768 769 getKwValue(slotName, keyName) {
770 const kwList = this.getBySlotName(slotName); 771 let kwValue = ''; 772 if (kwList) { 773 const kwObj = kwList.filter(x => x.key === keyName); 774 if (kwObj.length) { 775 kwValue = kwObj[0].value; 776 } 777 } 778 return kwValue; 779 } 780 781 setVideoKw(videoName, str) { 782 this._videos[videoName] = str; 783 } 784 785 getVideoKw(videoName) { 786 _log({module: 'Keyword', data: ['get video KW', videoName]}); 787 try { 788 const test = this._videos[videoName]; 789 if (test === undefined) { 790 throw 'videoName not found'; 791 } 792 return test; 793 } catch (e) { 794 return ''; 795 } 796 } 797 798 _getBreakpointDevice(breakpoint) { 799 let device = null; 800 if (['xxs', 'xs', 's'].indexOf(breakpoint) !== -1) { 801 device = 'mobile'; 802 } else if (['m'].indexOf(breakpoint) !== -1) { 803 device = 'tablet'; 804 } else if (['l', 'xl', 'xxl', 'xxxl'].indexOf(breakpoint) !== -1) { 805 device = 'desktop'; 806 } 807 return device; 808 } 809 810 } 811 812 window.lcm.ads.keywords = new Keywords(); 813 814 window.Hubvisor = window.Hubvisor || {cmd: []}; 815 816 817})(); 818// UTIQ 819 820 821 822 823 824 window.wls = { 825 options: { 826 list: {id: "lachainemeteo"}, 827 stats: {trackingId: "UA-75588349-1"} 828 } 829}; 830evt.listen('cmp', () => { 831 s = document.createElement('script'); 832 s.src = 'https://static-lists.linternaute.com/wls/wls.js'; 833 document.head.appendChild(s); 834 s.onload = () => { 835 window.googletag.cmd.push(() => { 836 if (typeof wls !== 'undefined' && typeof wls.getData !== 'undefined') { 837 wls.getData( 838 'isWhitelisted', 839 null, 840 function (result) { 841 var desadblock = result ? '1' : '0'; 842 googletag.pubads().setTargeting('ccm_whitelist', desadblock); 843 } 844 ); 845 } 846 }); 847 }; 848}); 849 </script>
849 850 851 852 853
853<script> 854 var dataLayer = [{ 855 'site':`WEATHER CRAVE (weathercrave.co.uk)`, 856 'environnement':`production`, 857 'support':'', 858 'websiteVersion':'', 859 'level1':`autres_pages`, 860 'level2':``, 861 'level3':`about-meteo-consult`, 862 'idType':``, 863 'idPays':``, 864 'namePays':``, 865 'idRegion':``, 866 'nameRegion':``, 867 'idDpt':``, 868 'nameDpt':``, 869 'idEntite':``, 870 'echeance':``, 871 'source':(function () { try { let val = ((window.location.hash).substring(1)); return val.substring(0, 149); } catch (e) { return ''; } })(), 872 'siteLanguage':`en_GB`, 873 'pageCategory':``, 874 'userAgent':(function () { try { let val = (navigator.userAgent); return val.substring(0, 149); } catch (e) { return ''; } })(), 875 'userStatus':`non abonné`, 876 'adblocks':``, 877 'sessionType':``, 878 'idArticle':``, 879 'subscriptionContentType':`gratuit`, 880 'estCANAL':`non` 881 }]; 882 883 884 885 evt.listen('deviceType', function () { 886 try { 887 let val = (window.lcm.device.getDeviceType()); 888 dataLayer.push({'support': val.substring(0, 149)}); 889 } catch (e) { 890 console.log('DataLayer Error ['+e.message+']'); 891 } 892 }); 893 evt.listen('deviceType', function () { 894 try { 895 let val = (window.lcm.device.getDeviceType()); 896 dataLayer.push({'websiteVersion': val.substring(0, 149)}); 897 } catch (e) { 898 console.log('DataLayer Error ['+e.message+']'); 899 } 900 }); _log({module:'DataLayer', type:'info', data:{ 901 'DataLayer': dataLayer 902 }}) 903 function loadGTM() {
vendor: 461 bytes, lines 903-911
903 904 (function (w, d, s, l, i) { 905 w[l] = w[l] || []; 906 w[l].push({'gtm.start': new Date().getTime(), event: 'gtm.js'}); 907 var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; 908 j.async = true; 909 j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; 910 f.parentNode.insertBefore(j, f); 911 })(window, document, 'script', 'dataLayer', '
911GTM-TGN88WM
vendor: 8 bytes, lines 911-912
911'); 912
912} 913</script>
913 914
914<script> 915 // evt.listen('cmpAccepted',()=>{ 916 loadGTM(); 917 // }); 918 </script>
918 919 920
920<script> 921 (function(x,p,l,n,a,i) { 922 a=p.createElement(l);a.async=!0;a.src=n;a.xpln=x; 923 i=p.currentScript||p.getElementsByTagName(l)[0];i.parentNode.insertBefore(a,i); 924 })({xid:'mediafigaro'},document,'script','https://cdn.xpln.tech/page.js'); 925 926 (function(x,p,l,n,a,i) { 927 self.xpln_targeting=function(){}; 928 self.get_xpln_targeting=function(){}; 929 a=x.createElement(p);a.async=!0; 930 a.src = l + 'mediafigaro' + '/'+location.hostname+ 931 '.js'; 932 i=x.currentScript||x.getElementsByTagName(p)[0];i.parentNode.insertBefore(a,i); 933 })(document,'script','https://cdn.xpln.tech/'); 934</script>
934 935
935<script> 936 const oneplusxInfos = { 'page_attr_pagecategory':`autres_pages`, 937 'page_attr_level1':`autres_pages`, 938 'page_attr_level2':``, 939 'page_attr_level3':`about-meteo-consult`, 940 'page_attr_tagname1':``, 941 'page_attr_tagname2':``, 942 'page_attr_tagname3':``, 943 'page_attr_articleid':``, 944 'page_attr_author':``, 945 'page_attr_pays':``, 946 'page_attr_region':``, 947 'page_attr_departement':``, 948 'page_attr_montant':``, 949 'page_attr_quantite':``, 950 'page_attr_subscriptioncontentstate':``, 951 'page_attr_subscriptioncontenttype':``, 952 'page_attr_userstatus':`inconnu`, 953 'page_attr_userstate':`non-connecte`, 954 'page_attr_subscription':``, 955 'page_attr_visitor_id':``, 956 'type':`default`, 957 'page_attr_url_path_1':`weather-services`, 958 'page_attr_url_path_2':`info`, 959 'page_attr_url_path_3':`about-meteo-consult`, 960 'page_attr_url_path_4':``, 961 'page_attr_page_title':``, 962 'page_attr_ctnt_qual':``, 963 'page_attr_domain':`co.uk`, 964 'page_attr_full_domain':`www.weathercrave.co.uk`, 965 'page_attr_url_cleaned':`www.weathercrave.co.uk/weather-services/info/about-meteo-consult`, 966 'page_attr_Seen-een':``, 967 'page_attr_sourcesite':(function () { try { return document.referrer; } catch(e) {return ''; } })() 968 }; 969</script>
969 970
970<script type="application/ld+json"> 971 {"@context":"http://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://www.weathercrave.co.uk/weather-forecast-united-kingdom/weather-forecast-united-kingdom-today","name":"Weather"}},{"@type":"ListItem","position":2,"item":{"@id":"https://www.weathercrave.co.uk/weather-services/info/about-meteo-consult","name":"about-meteo-consult"}}]} 972</script>
972 973 <link rel="apple-touch-icon" sizes="120x120" href="https://static5.mclcm.net/lcm2018/en/common/favicons/120_iPhone_retina.png"/> 974<link rel="apple-touch-icon" sizes="152x152" href="https://static5.mclcm.net/lcm2018/en/common/favicons/152_iPad_retina.png"/> 975<link rel="apple-touch-icon" sizes="167x167" href="https://static5.mclcm.net/lcm2018/en/common/favicons/167_iPad_pro.png"/> 976<link rel="apple-touch-icon" sizes="180x180" href="https://static5.mclcm.net/lcm2018/en/common/favicons/180_iPhone_6_plus.png"/> 977 978<link rel="icon" type="image/png" sizes="32x32" href="https://static5.mclcm.net/lcm2018/en/common/favicons/32_taskbar_shortcut_icon.png"/> 979<link rel="icon" type="image/png" sizes="96x96" href="https://static5.mclcm.net/lcm2018/en/common/favicons/96_desktop_shortcut_icon.png"/> 980<link rel="icon" type="image/png" sizes="16x16" href="https://static5.mclcm.net/lcm2018/en/common/favicons/16_browser_favicon.png"/> 981 982<link rel="icon" type="image/png" sizes="128x128" href="https://static5.mclcm.net/lcm2018/en/common/favicons/128_chrome_webstore_icon.png"/> 983<link rel="icon" type="image/png" sizes="196x196" href="https://static5.mclcm.net/lcm2018/en/common/favicons/196_android_chrome_icon.png"/> 984<link rel="icon" type="image/png" sizes="228x228" href="https://static5.mclcm.net/lcm2018/en/common/favicons/228_opera_coast_icon.png"/> 985 986<link rel="icon" type="image/png" sizes="70x70" href="https://static5.mclcm.net/lcm2018/en/common/favicons/70_windows.png"/> 987<link rel="icon" type="image/png" sizes="270x270" href="https://static5.mclcm.net/lcm2018/en/common/favicons/270_windows.png"/> 988<link rel="icon" type="image/png" sizes="310x310" href="https://static5.mclcm.net/lcm2018/en/common/favicons/310_310_windows.png"/> 989<link rel="icon" type="image/png" sizes="310x150" href="https://static5.mclcm.net/lcm2018/en/common/favicons/310_150_windows.png"/> 990 991 992 993 994 995 <link rel="stylesheet" href="https://www.weathercrave.co.uk/build/main_redesign.bcb0f22eb3707182578d.css" /> 996 997 <link rel="stylesheet" href="https://www.weathercrave.co.uk/build/services.bf5b1645d38003de9b6b.css"/> 998 <link rel="stylesheet" href="https://www.weathercrave.co.uk/build/home_section.d2660212f9c187badf1e.css"/> 999 1000 <style> 1001 @font-face { 1002 font-family: 'Nunito Sans'; 1003 font-style: normal; 1004 font-weight: 400 700; 1005 src: url('//static5.mclcm.net/lcm2018/fonts/nunito_sans_v8/regular_variable.woff2'); 1006 } 1007 1008 @font-face { 1009 font-family: 'Nunito Sans'; 1010 font-style: italic; 1011 font-weight: 400 700; 1012 unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 1013 src: url('//static5.mclcm.net/lcm2018/fonts/nunito_sans_v8/italic_variable.woff2'); 1014 } 1015 </style> 1016 1017 1018</head> 1019<body class="subset-font "> 1020<div class="background-interact"></div> 1021 1022 1023<header id="header" class="show-overlay 1024 "> 1025 <div class="header-container"> 1026 1027 <div class="burger-container"> 1028 <div class="bckgBurger"> 1029 <picture> 1030 <source 1031 media="(min-width: 2530px)" 1032 srcset="https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_361x81.png 360w, 1033 https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_722x162.png 720w, 1034 https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_1083x243.png 1080w" 1035 sizes="360px" 1036 width="360" 1037 height="80" 1038 /> 1039 <img 1040 src="https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_361x81.png 360w" 1041 srcset=" https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_182x162.png 720w, 1042 https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_273x243.png 1080w" 1043 sizes="90px" 1044 width="90" 1045 height="80" 1046 alt="" 1047 /> 1048 </picture> 1049 </div> 1050 <button id="menu" class="burger" aria-label="menu">
1051 <span class="icon-burger"></span> 1052 <span class="alert-container"> 1053 <svg class="icon icon-MenuAlert " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuAlert" /></svg> 1054 </span> 1055 </button> 1056 </div> 1057 1058 <div class="logo"> 1059 <a href="https://www.weathercrave.co.uk/weather-forecast-united-kingdom/weather-forecast-united-kingdom-today" id="logoHref"> 1060 <div class="img-container"> 1061 <picture id="headerLogo"> 1062 <source class="img-fluid" 1063 media="(min-width: 1000px)" 1064 srcset="https://static5.mclcm.net/lcm2018/en/common/logo.svg" 1065 width="96" 1066 height="54" 1067 /> 1068 <img class="img-fluid" 1069 src="https://static5.mclcm.net/lcm2018/en/common/logo.svg" 1070 width="70" 1071 height="40" 1072 alt="Weather Crave" 1073 /> 1074 </picture> 1075 </div> 1076 </a> 1077 </div> 1078 1079 <div class="search-container"> 1080 <div class="bckgSearch"> 1081 <picture> 1082 <source 1083 media="(min-width: 2530px)" 1084 srcset="https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_361x81.png 360w, 1085 https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_722x162.png 720w, 1086 https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_1083x243.png 1080w" 1087 sizes="360px" 1088 width="360" 1089 height="80" 1090 /> 1091 <img 1092 src="https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_361x81.png 360w" 1093 srcset=" https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_182x162.png 720w, 1094 https://static5.mclcm.net/lcm2018/int/menu/bckg_burger_basic_273x243.png 1080w" 1095 sizes="90px" 1096 width="90" 1097 height="80" 1098 alt="" 1099 /> 1100 </picture> 1101 </div> 1102 <div class="search-input-container autocomplete" id="genericSearch"> 1103 <form class="autocomplete-form" action="https://www.weathercrave.co.uk/weather-forecast-search" method="get" autocomplete="off"> 1104 <input type="search" name="q" class="autocomplete-field" disabled="true" 1105 placeholder="Search for a location or a favorite" 1106 required/> 1107 <button class="search-submit" type="submit" aria-label="search submit"> 1108 <svg class="icon icon-Search " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#search" /></svg> 1109 </button> 1110 <button class="search-aborted" type="button" aria-label="search aborted"> 1111 <svg class="icon icon-Close " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#close" /></svg> 1112 </button> 1113 </form> 1114 </div> 1115 <button id="mainSearch" class="magnifier" aria-label="search"> 1116 <svg class="icon icon-Magnifier " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#magnifier" /></svg> 1117 </button> 1118 <button 1119 class="account-access a-href 1120 " 1121 aria-label="My account" 1122 data-href="https://www.weathercrave.co.uk/sign-in"> 1123 <svg class="icon icon-MenuCompteOn " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuCompteOn" /></svg> 1124 </button> 1125 </div> 1126 </div> 1127 1128 <nav class="nav-overlay"> 1129 <ul class="nav-list"> 1130 <li class="item nav-home "> 1131 <a href="https://www.weathercrave.co.uk/weather-forecast-united-kingdom/weather-forecast-united-kingdom-today" data-target="" "> 1132 <svg class="icon icon-MenuAccueilOff off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuAccueilOff" /></svg> 1133 <svg class="icon icon-MenuAccueilOn on" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuAccueilOn" /></svg>
1133 <span class="nav-title">Home</span> 1134 </a> 1135 </li> 1136 <li class="item nav-interactiveWeatherMap "> 1137 <a href="https://www.weathercrave.co.uk/weather-map/rain-radar" data-target="" "> 1138 <svg class="icon icon-MenuRadarOff off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuRadarOff" /></svg> 1139 <svg class="icon icon-MenuRadarOn on" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuRadarOn" /></svg> <span class="nav-title">Radar</span> 1140 </a> 1141 </li> 1142 <li class="item nav-mountain "> 1143 <a href="https://www.weathercrave.co.uk/weather-forecast-mountain/weather-forecast-mountain" data-target="" "> 1144 <svg class="icon icon-MenuMountain off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuMountain" /></svg> 1145 <svg class="icon icon-MenuMountain on" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuMountain" /></svg> <span class="nav-title">Mountain</span> 1146 </a> 1147 </li> 1148 <li class="item nav-world "> 1149 <a href="https://www.weathercrave.co.uk/weather-forecast-world/weather-forecast-world" data-target="" "> 1150 <svg class="icon icon-MenuWorld off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuWorld" /></svg> 1151 <svg class="icon icon-MenuWorld on" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuWorld" /></svg> <span class="nav-title">World</span> 1152 </a> 1153 </li> 1154 <li class="item nav-country "> 1155 <a href="https://www.weathercrave.co.uk/weather-forecast-united-kingdom/country-149/weather-forecast-united-kingdom-today" data-target="" "> 1156 <svg class="icon icon-MenuUk off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuUk" /></svg> 1157 <svg class="icon icon-MenuUk on" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuUk" /></svg> <span class="nav-title">United Kingdom</span> 1158 </a> 1159 </li> 1160 <li class="item nav-contact "> 1161 <a href="https://www.weathercrave.co.uk/contact-form" data-target="" "> 1162 <svg class="icon icon-NewsletterOff off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#newsletter-off" /></svg> 1163 <svg class="icon icon-NewsletterOff on" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#newsletter-off" /></svg> <span class="nav-title">Contact us</span> 1164 </a> 1165 </li> 1166 <li class="item nav-account "> 1167 <a href="https://www.weathercrave.co.uk/my-account" data-target="" "> 1168 <svg class="icon icon-MenuCompteOff off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuCompteOff" /></svg> 1169 <svg class="icon icon-MenuCompteOn on" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuCompteOn" /></svg>
1169 <span class="nav-title">My account</span> 1170 </a> 1171 </li> 1172 <li class="item nav-connexion "> 1173 <button class="a-href" data-href="https://www.weathercrave.co.uk/sign-in?cb=http://www.weathercrave.co.uk/weather-services/info/about-meteo-consult" data-target="" type="button"> 1174 <svg class="icon icon-MenuCompteOff off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuCompteOff" /></svg> 1175 <svg class="icon icon-MenuCompteOn on" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuCompteOn" /></svg> <span class="nav-title">Log in</span> 1176 </button> 1177 </li> 1178 </ul> 1179 </nav> 1180 1181 <div class="grid-container container-fluid nav-container">
1182 <nav class="nav grid col-m-16" id="nav-bar"> 1183 <div class="container-menu"> 1184 <ul class="nav-list"> 1185 <li class="item nav-home "> 1186 <a href="https://www.weathercrave.co.uk/weather-forecast-united-kingdom/weather-forecast-united-kingdom-today" data-target="" > 1187 <svg class="icon icon-MenuAccueilOff off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuAccueilOff" /></svg> 1188 <span class="nav-title">Home</span> 1189 </a> 1190 1191 </li> 1192 <li class="item nav-interactiveWeatherMap "> 1193 <a href="https://www.weathercrave.co.uk/weather-map/rain-radar" data-target="" > 1194 <svg class="icon icon-MenuRadarOff off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuRadarOff" /></svg> 1195 <span class="nav-title">Radar</span> 1196 </a> 1197 1198 </li> 1199 <li class="item nav-mountain "> 1200 <a href="https://www.weathercrave.co.uk/weather-forecast-mountain/weather-forecast-mountain" data-target="" > 1201 <svg class="icon icon-MenuMountain off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuMountain" /></svg> 1202 <span class="nav-title">Mountain</span> 1203 </a> 1204 1205 </li> 1206 <li class="item nav-world "> 1207 <a href="https://www.weathercrave.co.uk/weather-forecast-world/weather-forecast-world" data-target="" > 1208 <svg class="icon icon-MenuWorld off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuWorld" /></svg> 1209 <span class="nav-title">World</span> 1210 </a> 1211 1212 </li> 1213 <li class="item nav-country "> 1214 <a href="https://www.weathercrave.co.uk/weather-forecast-united-kingdom/country-149/weather-forecast-united-kingdom-today" data-target="" > 1215 <svg class="icon icon-MenuUk off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuUk" /></svg> 1216 <span class="nav-title">United Kingdom</span> 1217 </a> 1218 1219 </li> 1220 <li class="item nav-contact "> 1221 <a href="https://www.weathercrave.co.uk/contact-form" data-target="" > 1222 <svg class="icon icon-NewsletterOff off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#newsletter-off" /></svg> 1223 <span class="nav-title">Contact us</span> 1224 </a> 1225 1226 </li> 1227 <li class="item nav-account "> 1228 <a href="https://www.weathercrave.co.uk/my-account" data-target="" > 1229 <svg class="icon icon-MenuCompteOff off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuCompteOff" /></svg> 1230 <sp
1230an class="nav-title">My account</span> 1231 </a> 1232 1233 </li> 1234 <li class="item nav-connexion "> 1235 <button class="a-href" data-href="https://www.weathercrave.co.uk/sign-in" data-target="" type="button"> 1236 <svg class="icon icon-MenuCompteOff off" aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#menuCompteOff" /></svg> 1237 <span class="nav-title">Log in</span> 1238 </button> 1239 1240 </li> 1241 </ul> 1242 <div class="header-share"> 1243 <div class="social-container"> 1244 <button class="a-href" data-href="https://www.facebook.com/lameilleureinfometeo" rel="nofollow" data-target="_blank"><div class="bout4"><svg class="icon icon-Facebook " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#facebook" /></svg></div></button> 1245 <button class="a-href" data-href="https://twitter.com/LaChaineMeteo" rel="nofollow" data-target="_blank"><div class="bout4"><svg class="icon icon-Twitter " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#twitter" /></svg></div></button> 1246 <button class="a-href" data-href="https://www.instagram.com/lachainemeteo/" rel="nofollow" data-target="_blank"><div class="bout4"><svg class="icon icon-Instagram " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#instagram" /></svg></div></button> 1247 <button class="a-href" data-href="https://www.snapchat.com/add/lachainemeteo" rel="nofollow" data-target="_blank"><div class="bout4"><svg class="icon icon-Snapchat " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#snapchat" /></svg></div></button> 1248 <button class="a-href" data-href="https://www.tiktok.com/@lachainemeteofrance" rel="nofollow" data-target="_blank"><div class="bout4"><svg class="icon icon-Tiktok " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#tiktok" /></svg></div></button> 1249 </div> 1250 </div> 1251 </div> 1252 </nav> 1253 </div> 1254 1255 <div class="grid-container container-fluid search-nav-container">
1256 <nav class="nav grid col-m-16" id="nav-bar-search"> 1257 <div id="resultContainerHeader" class="result-container"> 1258 <div class="result-title"> 1259 <div class="section-title">Search results</div> 1260 </div> 1261 <div class="autocomplete-results-block"> 1262 <ul id ="headerResult" class="autocomplete-results"></ul> 1263 <div class="result-all-container"> 1264 <svg class="icon icon-Magnifier " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#magnifier" /></svg> 1265 <span class="result-all-title">See all results</span> 1266 </div> 1267 <div class="autocomplete-more"> 1268 <span id="autocomplete-more-label" class="autocomplete-more-label">CAN'T FIND YOUR LOCATION?</span> 1269 <div id="autocomplete-more-container" class="autocomplete-more-container"> 1270 <img data-src="https://static5.mclcm.net/lcm2018/int/menu/bckg_add_place_330x85.png" 1271 data-srcset="https://static5.mclcm.net/lcm2018/int/menu/bckg_add_place_330x85.png 330w,https://static5.mclcm.net/lcm2018/int/menu/bckg_add_place_660x170.png 660w" 1272 width="330" 1273 height="85" 1274 sizes="100vw" 1275 alt="" 1276 role="none" 1277 /> 1278 <div class="autocomplete-more-btn"> 1279 <svg class="icon icon-SearchEdit " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#searchEdit" /></svg> 1280 <button id="btnMorePlace">Request the creation of a location</button> 1281 </div> 1282 </div> 1283 <div id="addPlaceHeader" class="add-place-header"> 1284 </div> 1285 </div> 1286 </div> 1287 </div> 1288 <div id="underResultsContainer"> 1289 <div class="geoloc-container"> 1290 <div class="geoloc-title"> 1291 My location 1292 </div> 1293 <a href=""> 1294 <div id="geolocContainerHeader" class="geoloc-content"> 1295 <div class="icon-container"> 1296 <svg class="icon icon-DirectionArrowSW " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-forecast-v1.1.18.svg#direction-arrow-sw" /></svg> 1297 </div> 1298 <div class="text-content"> 1299 <span class="main-title"></span> 1300 <span class="subtitle"></span> 1301 </div> 1302 <div class="last-icon"> 1303 <svg class="icon icon-ChevronRightBold " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#angle-right-bold" /></svg> 1304 </div> 1305 </div> 1306 </a> 1307 </div> 1308 <div id="historicalContainerHeader" class="historical-container"> 1309 <div class="historical-title"> 1310 <div class="section-title">Recent searches</div> 1311 </div> 1312 <div class="historical-block"> 1313 <ul id="headerHistorical" class="historical-list"></ul> 1314 <div class="historical-remove"> 1315 <svg class="icon icon-Trash " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#trash" /></svg> 1316 <span class="remove-title">Clear my history</span> 1317 </div> 1318 </div> 1319 </div> 1320 <div id="favoriteContainerHeader" class="favorite-container show"> 1321 <div class="favorite-title a-href" data-href="https://www.weathercrave.co.uk/my-account/favorites"> 1322 <div class="section-title">My favorites</div> 1323 </div> 1324 <div class="favorite-block"> 1325 <ul id="headerFavorite" class="favorite-list"></ul> 1326 <div class="favorite-edit a-href" data-href="https://www.weathercrave.co.uk/my-account/favorites"> 1327 <svg class="icon icon-SearchEdit " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#searchEdit" /></svg>
1328 <span class="edit-title">Edit my favorites</span> 1329 </div> 1330 </div> 1331 </div> 1332 <div class="noconnect-favorite-container"> 1333 <span class="noconnect-favorite-label">Create your account to save your favorites.</span> 1334 <div class="noconnect-favorite-btn a-href" data-href="https://www.weathercrave.co.uk/sign-in">Log in</div> 1335 </div> 1336 </div> 1337 </nav> 1338 </div> 1339 1340</header> 1341<div id="header-margin"></div> 1342 1343 1344 1345<nav class="grid-container container-l breadcrumb-container"> 1346 <ol class="grid col-16 breadcrumb"> 1347 <li><a href="https://www.weathercrave.co.uk/weather-forecast-united-kingdom/weather-forecast-united-kingdom-today">Weather</a></li> 1348 <li><a href="https://www.weathercrave.co.uk/weather-services/info/about-meteo-consult">about-meteo-consult</a></li> 1349 </ol> 1350</nav> <section id="forecastHeader" class="grid-container container-fluid"> 1351 1352<div id="header-background" class="grid col-16"> 1353 <div class="bg service"> 1354 <div class="fake-bckg-menu scrim"></div> 1355 <div class="scrim"></div> 1356 1357 <picture> 1358 <source media="(min-width: 1000px)" 1359 srcset="https://static5.mclcm.net/lcm2018/int/service/HEADER_PAYS_96.jpg" 1360 width="2048" 1361 height="375" 1362 /> 1363 <source media="(min-width: 420px)" 1364 srcset="https://static5.mclcm.net/lcm2018/int/service/HEADER_PAYS_96.jpg" 1365 width="1000" 1366 height="165" 1367 /> 1368 <img fetchpriority="high" 1369 src="https://static5.mclcm.net/lcm2018/int/service/HEADER_PAYS_96.jpg" 1370 srcset="https://static5.mclcm.net/lcm2018/int/service/HEADER_PAYS_96.jpg 2x" 1371 width="425" 1372 height="165" 1373 alt="" 1374 /> 1375 </picture> 1376 </div> 1377</div> 1378 1379<div id="page-header" class="grid col-16 "> 1380 <div class="title-container"> 1381 <div class="title-favoris"> 1382 <div> 1383 <div class="logo"> 1384 1385 <div class="img-container"> 1386 <div id="headerLogoSmall"><svg class="icon icon-Logo " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#logo" /></svg></div> 1387 </div> 1388 </div> 1389 <h1 class="title-line"> 1390 <span class="title"> 1391 ABOUT METEO CONSULT 1392 </span> 1393 </h1> 1394 </div> 1395 </div> 1396 </div> 1397 <div class="grid col-16 header-links-container"> 1398 <div class="slider-overflow"> 1399 <a class="header-cta-link " 1400 href="https://www.weathercrave.co.uk/weather-services/info/terms-of-service" 1401 id="tab-1"> 1402 TOS 1403 </a> 1404 <a class="header-cta-link " 1405 href="https://www.weathercrave.co.uk/weather-services/info/terms-and-conditions" 1406 id="tab-2"> 1407 TCS 1408 </a> 1409 <a class="header-cta-link " 1410 href="https://www.weathercrave.co.uk/weather-services/info/legal-notice" 1411 id="tab-3"> 1412 Legal notice 1413 </a> 1414 <a class="header-cta-link " 1415 href="https://www.weathercrave.co.uk/weather-services/info/cookies" 1416 id="tab-4"> 1417 Cookies 1418 </a> 1419 <a class="header-cta-link actif" 1420 href="https://www.weathercrave.co.uk/weather-services/info/about-meteo-consult" 1421 id="tab-5"> 1422 About METEO CONSULT 1423 </a> 1424 <a class="header-cta-link " 1425 href="https://www.weathercrave.co.uk/weather-services/info/privacy-policy" 1426 id="tab-6"> 1427 Confidentiality policy 1428 </a> 1429 </div> 1430 </div> 1431</div> 1432 </section> 1433 <section class="grid-container container-l" id="articleTop">
1434 <div class="content grid col-16"> 1435 <div id="contInfo"> 1436 <article class="article" itemscope="" itemtype="https://schema.org/Article" itemprop="mainContentOfPage"> 1437 1438 <p itemprop="text"></p> 1439 1440 <p itemprop="articleBody"> 1441 1442 <p> 1443 METEO CONSULT was created in 1988 - more than 30 years ago! It was the first private, independent French company providing 1444 weather forecasting and analysis in France. 1445 </p> 1446 <p> 1447 We are available via all the distribution channels so you need never be without us! Internet, mobile apps and tablets ... 1448 </p> 1449 1450 <p> 1451 So you'll have understood by now that weather forecasting is our specialty! Daily weather, hour by hour forecasts, marine weather, 1452 beach weather, skiiing weather, holiday weather, the weather in the islands or around the world... 1453 it's a long list but that's not everything! 1454 We put a lot of effort into making this often complex science accessible and easy to understand for everyone. 1455 Our news tab tells you about and explains special weather and climatic events in France and around the world. 1456 </p> 1457 <p> 1458 We operate several different web sites : 1459 <br/><a href={ urlMc } target='_blank'>https://www.meteoconsult.co.uk/</a> our Premium weather site. 1460 <br/><a href={ urlMarine } target='_blank'>https://marine.meteoconsult.co.uk</a> for essential information about the weather at sea 1461 <br/><a href={ homeUrl } target='_blank'>https://www.weathercrave.co.uk/weather-forecast-united-kingdom/weather-forecast-united-kingdom-today</a> our website for the general public 1462 </p> 1463 1464 <p> 1465 In total, more than 8 million views per day, all thanks to top quality weather forecasts. 1466 We have professional meteorologists and an effective, innovative and reactive IT team, which make all the difference! 1467 </p> 1468 <br/> 1469 1470 </p> 1471 1472 </article> 1473</div> 1474 </div> 1475 </section> 1476 1477 1478<footer id="footer" class="footer"> 1479 <div class="grid-container container-fluid"> 1480 <div class="grid col-16 section"> 1481 <div class="grid-container"> 1482 <div class="grid col-16 col-m-5 col-l-6 items-0"> 1483 <div class="logo"> 1484 <svg class="icon icon-LogoWeatherCrave " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#logo-weather-crave" /></svg> 1485 <div class="logo-devices"> 1486 <svg class="icon icon-Mobile " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#mobile" /></svg> 1487 <svg class="icon icon-Laptop " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#laptop" /></svg> 1488 <svg class="icon icon-Tv " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#tv" /></svg> 1489 </div> 1490 </div> 1491 </div> 1492 1493 <ul class="grid col-16 col-m-5 items items-1"> 1494 <li class="item"> 1495 <a href="https://www.weathercrave.co.uk/change-language" class="link"> 1496 <strong>Language of the site : EN</strong> 1497 <img class="flag lazyload" 1498 src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" 1499 data-src="https://static5.mclcm.net/lcm2018/int/flags/gb.svg" 1500 alt="gb" 1501 width="20" 1502 height="15" 1503 /> 1504 </a> 1505 </li> 1506 1507 <li class="item"> 1508 <a href="https://www.weathercrave.co.uk/weather-services/presentation/newsroom" class="link">Our weather experts</a> 1509 </li> 1510 <li class="item"> 1511 <a href="https://www.weathercrave.co.uk/weather-services/info/about-meteo-consult" class="link">About us</a> 1512 </li> 1513 <li class="item"> 1514 <a href="https://www.weathercrave.co.uk/contact-form" class="link">Contact us</a> 1515 </li> 1516 <li class="item"> 1517 <a href="https://www.weathercrave.co.uk/legend-pictograms" class="link">Legend of pictograms</a> 1518 </li> 1519 </ul> 1520
1521 <ul class="grid col-16 col-m-5 items items-2"> 1522 <li class="item">METEO CONSULT</li> 1523 <li class="item"> 1524 <a href="https://marine.meteoconsult.co.uk" class="link">Shipping Forecast</a> 1525 </li> 1526 <li class="item"> 1527 <a href="https://www.meteoconsult.co.uk/" class="link">Professional Forecast</a> 1528 </li> 1529 </ul> 1530 1531 </div> 1532 1533 <div class="app-links"> 1534 <div class="label">Get our apps :</div> 1535 1536 <div class="icons"> 1537 <button class="a-href" 1538 aria-label="" 1539 title="Weather app iPhone and iPad" 1540 data-href="https://itunes.apple.com/fr/app/la-chaine-meteo/id324565014?mt=8" 1541 > 1542 <img class="lazyload icon" 1543 src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" 1544 data-src="https://static5.mclcm.net/lcm2018/en/common/apple-store-badge-130x40.png" 1545 data-srcset="https://static5.mclcm.net/lcm2018/en/common/apple-store-badge-130x40.png 130w, https://static5.mclcm.net/lcm2018/en/common/apple-store-badge-260x80.png 260w" 1546 alt="Weather app iPhone and iPad" 1547 width="130" 1548 height="40" 1549 sizes="130px" 1550 /> 1551 </button> 1552 1553 <button class="a-href" 1554 aria-label="" 1555 title="Android Weather app" 1556 data-href="https://play.google.com/store/apps/details?id=com.lachainemeteo.androidapp&hl=fr" 1557 > 1558 1559 <img class="lazyload icon" 1560 src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" 1561 data-src="https://static5.mclcm.net/lcm2018/en/common/google-play-badge-130x40.png" 1562 data-srcset="https://static5.mclcm.net/lcm2018/en/common/google-play-badge-130x40.png 130w, https://static5.mclcm.net/lcm2018/en/common/google-play-badge-260x80.png 260w" 1563 alt="Android Weather app" 1564 width="130" 1565 height="40" 1566 sizes="130px" 1567 /> 1568 </button> 1569 </div> 1570 </div> 1571 1572 <ul class="sitemap"> 1573 <li class="item"> 1574 <a href="https://www.weathercrave.co.uk/weather-services/info/legal-notice" class="link">Legal notice</a> 1575 </li> 1576 <li class="item"> 1577 <a href="https://www.weathercrave.co.uk/weather-services/info/terms-of-service" class="link">TOS</a> 1578 </li> 1579 <li class="item"> 1580 <a href="https://www.weathercrave.co.uk/website-map" class="link">Site map</a> 1581 </li> 1582 <li class="item"> 1583 <a href="https://www.weathercrave.co.uk/weather-services/info/cookies" class="link">Information about cookies</a> 1584 </li> 1585 <li class="item"> 1586 <a href="https://www.weathercrave.co.uk/weather-services/info/privacy-policy" class="link">Confidentiality policy</a> 1587 </li> 1588 1589 <li class="item"> 1590 <button id="cookies-config" class="link">Set cookies</button> 1591 </li> 1592 1593 <li class="item"> 1594 <button class="link" onclick="__tcfapi('show', 2, function(){}, {})">Display the Privacy Center</button> 1595 </li> 1596 </ul> 1597 1598 <p class="copyright"><span onclick="copySlotsInfo()">©</span>2026 Weather Crave</p> 1599 </div> 1600 </div> 1601</footer> 1602
1603<script> 1604 const copySlotsInfo = () => { 1605 let text = ""; 1606 1607 window.googletag.pubads().getSlots().forEach( slot => { 1608 let slotData = { 1609 invCode: null, 1610 slotName: null, 1611 tag: null, 1612 campagne: null 1613 } 1614 slotData.campagne = slot.getResponseInformation(); 1615 1616 let tag = slot.getSlotId().getName(); 1617 1618 lcm.gam.getSlots().forEach((gamSlot)=>{ 1619 if(gamSlot.tag === tag){ 1620 slotData.invCode = gamSlot.invCode; 1621 slotData.slotName = gamSlot.slotName; 1622 slotData.tag = gamSlot.tag; 1623 } 1624 }); 1625 text += "\n \n" + JSON.stringify(slotData); 1626 }); 1627 1628 navigator.clipboard.writeText(text).then(function() { 1629 console.log('Slots info to clipboard OK'); 1630 }, function(err) { 1631 console.log('Slots info to clipboard KO'); 1632 // console.log(err); 1633 }); 1634 } 1635</script>
1635 1636 1637
1638<script> 1639 1640 1641 evt.listen('DOMContentLoaded', () => { 1642 1643 try { 1644 const header = document.getElementById('header'); 1645 let btnMagnifier = header.querySelector('#mainSearch'); 1646 let btnFavorite = header.querySelector('.magnifier-favorite'); 1647 1648 if (btnMagnifier !== null) { 1649 btnMagnifier.addEventListener('click', () => { 1650 loadScriptBuild('autocomplete_header'); 1651 header.querySelector('#genericSearch input[type="search"]').focus(); 1652 }, {once: true}); 1653 if(btnFavorite){ 1654 btnFavorite.addEventListener('click', () => { 1655 loadScriptBuild('autocomplete_header'); 1656 header.querySelector('#genericSearch input[type="search"]').focus(); 1657 }, {once: true}); 1658 } 1659 } 1660 1661 let field = header.querySelector('#genericSearch input[type="search"]'); 1662 if (field !== null) { 1663 field.addEventListener('focus', () => { 1664 loadScriptBuild('autocomplete_header'); 1665 }, {once: true}); 1666 } 1667 1668 } catch (e) { 1669 console.warn('header error', e); 1670 console.warn(e); 1671 } 1672 1673 1674 loadScriptBuild('cookies'); 1675 loadScriptBuild('panel_manager'); 1676 1677 1678 1679}); 1680 1681 1682evt.listen('autocomplete_headerLoaded', () => { 1683 let starFull = '<svg class="icon icon-StarFull " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#star-full" /></svg>'; 1684 let historical = '<svg class="icon icon-Historical " aria-hidden="true" ><use xlink:href="/images/int/svg/icons-v1.1.33.svg#historical" /></svg>'; 1685 1686 window.lcm.autocompleteHeader.getInstance() 1687 .setConfig({ 1688 "containerId": "genericSearch", 1689 "urlSearchByEntity": 'https://www.weathercrave.co.uk/ajax/search-entity?e=', 1690 "urlSearchByQuery": 'https://www.weathercrave.co.uk/ajax/search-autocomplete?q=', 1691 }) 1692 .setIconStarFull(starFull) 1693 .setIconHistorical(historical) 1694 .run(); 1695}); 1696 1697 1698evt.listen('shortcutLoaded', () => { 1699 evt.listen('lazyload', () => { 1700 window.lcm.shortcut 1701 .setUrlEntityForecast({ 1702 url: 'https\u003A\/\/www.weathercrave.co.uk\/ajax\/entity\/99999\u002D88888', 1703 typeId: '99999', 1704 id: '88888' 1705 }) 1706 .setIcons({ 1707 alert: '\u003Csvg\u0020class\u003D\u0022icon\u0020icon\u002DAlertStroke\u0020\u0022\u0020aria\u002Dhidden\u003D\u0022true\u0022\u0020\u003E\u003Cuse\u0020xlink\u003Ahref\u003D\u0022\/images\/int\/svg\/icons\u002Dv1.1.33.svg\u0023alertStroke\u0022\u0020\/\u003E\u003C\/svg\u003E', 1708 close: '\u003Csvg\u0020class\u003D\u0022icon\u0020icon\u002DClose\u0020\u0022\u0020aria\u002Dhidden\u003D\u0022true\u0022\u0020\u003E\u003Cuse\u0020xlink\u003Ahref\u003D\u0022\/images\/int\/svg\/icons\u002Dv1.1.33.svg\u0023close\u0022\u0020\/\u003E\u003C\/svg\u003E', 1709 geolocation: '\u003Csvg\u0020class\u003D\u0022icon\u0020icon\u002DGeolocation\u0020\u0022\u0020aria\u002Dhidden\u003D\u0022true\u0022\u0020\u003E\u003Cuse\u0020xlink\u003Ahref\u003D\u0022\/images\/int\/svg\/icons\u002Dv1.1.33.svg\u0023geolocation\u0022\u0020\/\u003E\u003C\/svg\u003E', 1710 historical: '\u003Csvg\u0020class\u003D\u0022icon\u0020icon\u002DHistorical\u0020\u0022\u0020aria\u002Dhidden\u003D\u0022true\u0022\u0020\u003E\u003Cuse\u0020xlink\u003Ahref\u003D\u0022\/images\/int\/svg\/icons\u002Dv1.1.33.svg\u0023historical\u0022\u0020\/\u003E\u003C\/svg\u003E', 1711 starFull: '\u003Csvg\u0020class\u003D\u0022icon\u0020icon\u002DStarFull\u0020\u0022\u0020aria\u002Dhidden\u003D\u0022true\u0022\u0020\u003E\u003Cuse\u0020xlink\u003Ahref\u003D\u0022\/images\/int\/svg\/icons\u002Dv1.1.33.svg\u0023star\u002Dfull\u0022\u0020\/\u003E\u003C\/svg\u003E', 1712 chevronLeft: '\u003Csvg\u0020class\u003D\u0022icon\u0020icon\u002DChevronLeft\u0020\u0022\u0020aria\u002Dhidden\u003D\u0022true\u0022\u0020\u003E\u003Cuse\u0020xlink\u003Ahref\u003D\u0022\/images\/int\/svg\/icons\u002Dv1.1.33.svg\u0023angle\u002Dleft\u0022\u0020\/\u003E\u003C\/svg\u003E', 1713 chevronRight: '\u003Csvg\u0020class\u003D\u0022icon\u0020icon\u002DChevronRight\u0020\u0022\u0020aria\u002Dhidden\u003D\u0022true\u0022\u0020\u003E\u003Cuse\u0020xlink\u003Ahref\u003D\u0022\/images\/int\/svg\/icons\u002Dv1.1.33.svg\u0023angle\u002Dright\u0022\u0020\/\u003E\u003C\/svg\u003E', 1714 chevronRightBold: '\u003Csvg\u0020class\u003D\u0022icon\u0020icon\u002DChevronRightBold\u0020\u0022\u0020aria\u002Dhidden\u003D\u0022true\u0022\u0020\u003E\u003Cuse\u0020xlink\u003Ahref\u003D\u0022\/images\/int\/svg\/icons\u002Dv1.1.33.svg\u0023angle\u002Dright\u002Dbold\u0022\u0020\/\u003E\u003C\/svg\u003E' 1715 }) 1716 .setPopinParams({ 1717 deleteBookmark: { 1718 title: "Confirmation", 1719 message: "Your bookmark has been deleted", 1720 close: true, 1721 icon: 'none', 1722 buttons: [{ 1723 label: "Close" 1724 }] 1725 }, 1726 deleteHistorical: { 1727 title: "Confirmation", 1728 message: "This forecast has been deleted from your search history", 1729 close: true, 1730 icon: 'none', 1731 buttons: [{ 1732 label: "Close" 1733 }] 1734 }, 1735 connect: { 1736 title: "Sorry !", 1737 message: "To manage your favourites, you must be logged in.", 1738 close: true, 1739 icon: 'none', 1740 buttons: [ 1741 { 1742 label: "Register", 1743 callback: function () { 1744 window.location.href = 'https\u003A\/\/www.weathercrave.co.uk\/sign\u002Dup'; 1745 } 1746 }, 1747 { 1748 label: "Login", 1749 callback: function () { 1750 sessionStorage.setItem('redirectAfterLogin', window.location.href); 1751 window.location.href = 'https\u003A\/\/www.weathercrave.co.uk\/sign\u002Din'; 1752 } 1753 } 1754 ] 1755 }, 1756 favorite: { 1757 title: "Your Bookmarks", 1758 message: "To organize your bookmarks, you will be redirected to your My Account page", 1759 close: true, 1760 icon: "none", 1761 buttons: [ 1762 { 1763 label: "Cancel" 1764 }, 1765 { 1766 label: "Continue", 1767 callback: function () { 1768 window.location.href = 'https\u003A\/\/www.weathercrave.co.uk\/my\u002Daccount'; 1769 } 1770 } 1771 ] 1772 } 1773 }); 1774 }); 1775}); 1776evt.listen('historicalLoaded', () => { 1777 window.lcm.historical 1778 .setCookieDomain('.weathercrave.co.uk') 1779 .load(); 1780}); 1781evt.listen('bookmarkLoaded', () => { 1782 window.lcm.bookmark 1783 .setUrlBookmarkList('https\u003A\/\/www.weathercrave.co.uk\/ajax\/favorites') 1784 .setUrlBookmarkDelete("https\u003A\/\/www.weathercrave.co.uk\/ajax\/favorite\/remove") 1785 .load(); 1786}); 1787 1788
1789evt.listen('cookiesLoaded', () => { 1790 loadScriptBuild('user'); 1791}); 1792 1793evt.listen('userLoaded', () => { 1794 if (!window.lcm.user.isLoaded()) { 1795 window.lcm.user 1796 .setCookieDomain('.weathercrave.co.uk') 1797 .setUrlInfo('https\u003A\/\/www.weathercrave.co.uk\/ajax\/user\u002Dinfos') 1798 .load(); 1799 } 1800}); 1801 1802evt.listen('menu_coreLoaded', () => { 1803 const addPlaceBtn = document.querySelector('#btnMorePlace'); 1804 const formAddPlaceContainer = document.querySelector('#addPlaceHeader'); 1805 // const containerMore = document.querySelector('.autocomplete-more'); 1806 const addPlaceLabel = document.getElementById('autocomplete-more-label'); 1807 const addPlaceCTA = document.getElementById('autocomplete-more-container'); 1808 1809 addPlaceBtn.addEventListener('click', () => { 1810 document.querySelector('#resultContainerHeader').classList.add('fixed-open'); 1811 addPlaceLabel.classList.add('d-none'); 1812 addPlaceCTA.classList.add('d-none'); 1813 1814 window.lcm.fetch('https://www.weathercrave.co.uk/ajax/add-place-form', {method: 'POST'}) 1815 .then(response => response.json()) 1816 .then((data) => { 1817 formAddPlaceContainer.innerHTML = data.html; 1818 const url = 'https\u003A\/\/www.weathercrave.co.uk\/ajax\/search\u002Dadd\u002Dplace'; 1819 const form_add_place = document.getElementById('addPlaceHeader'); 1820 const form_search_namePlace = document.getElementById('add_place_search_namePlace'); 1821 const form_select_country = document.getElementById('add_place_search_country'); 1822 const header = document.getElementById('header'); 1823 const form = form_add_place.querySelector('form[name="add_place_search"]'); 1824 let data_loaded = false; 1825 1826 function triggerForm() { 1827 const searchQuery = document.querySelector('.autocomplete-field').value; 1828 form_add_place.classList.toggle('active'); 1829 form_search_namePlace.value = searchQuery; 1830 // TODO remove 1831 window.scroll({top: form_add_place.offsetTop - header.offsetHeight, behavior: 'smooth'}); 1832 } 1833 1834 if (!data_loaded) { 1835 window.lcm.fetch(url) 1836 .then(response => response.json()) 1837 .then((data) => { 1838 for (let item in data) { 1839 if (data.hasOwnProperty(item)) { 1840 let element = document.createElement("option"); 1841 element.value = item; 1842 element.innerHTML = data[item]; 1843 form_select_country.append(element); 1844 } 1845 } 1846 1847 if (data.hasOwnProperty('France')) { 1848 form_select_country.value = data['France']; 1849 } 1850 1851 data_loaded = true; 1852 triggerForm(); 1853 }) 1854 } else { 1855 triggerForm(); 1856 } 1857 1858 1859 form.addEventListener('submit', (e) => { 1860 e.preventDefault(); 1861 const formData = new FormData(form); 1862 window.lcm.fetch(form.action, { 1863 method: form.method, 1864 headers: { 1865 'X-Requested-With': 'XMLHttpRequest' 1866 }, 1867 body: formData 1868 }) 1869 .then(response => response.json()) 1870 .then(data => { 1871 if (data.success) { 1872 const confirmationDiv = document.createElement('div'); 1873 confirmationDiv.classList.add('confirmation-message'); 1874 confirmationDiv.innerHTML = `Your message has been sent. 1875 <br/><p>Thank you.<br />
1875Our team will come back to you as soon as possible.<br />A très bientôt!</p> `; 1876 formAddPlaceContainer.append(confirmationDiv); 1877 } else { 1878 const errorAddPlaceDiv = document.createElement('div'); 1879 errorAddPlaceDiv.classList.add('confirmation-message'); 1880 errorAddPlaceDiv.innerHTML = `Une erreur est survenu lors de la demande d'ajout d'un lieu.<br/><p>Contacter nous par email [email protected] (merci de préciser vos nom, prénom, email et les information du lieu).<br />Nos équipes vont revenir vers vous dans les meilleurs délais.<br />A très bientôt!</p>`; 1881 formAddPlaceContainer.append(errorAddPlaceDiv); 1882 } 1883 }) 1884 }); 1885 1886 }); 1887 }); 1888 1889 1890 // load bkg 1891 let img = document.querySelector('#autocomplete-more-container img'); 1892 window.lcm.lazyload.addLazyload(img); 1893 1894}); 1895 1896 1897// TODO refacto 1898evt.listen('panel_managerLoaded', () => { 1899 const searchContainer = document.querySelector('#genericSearch'); 1900 const searchInput = searchContainer.querySelector('input'); 1901 // todo remove 1902 searchInput.disabled = false; 1903 const allResutContainer = document.querySelector('.result-all-container'); 1904 const formContainer = document.querySelector('#genericSearch'); 1905 const inputForm = formContainer.querySelector('input[name="q"]'); 1906 const formSearch = formContainer.querySelector('.autocomplete-form'); 1907 if (allResutContainer) { 1908 allResutContainer.addEventListener('click', () => { 1909 if (inputForm.value !== '') { 1910 formSearch.submit(); 1911 } 1912 }); 1913 } 1914 1915 1916 document.querySelector('#mainSearch').addEventListener('click', () => { 1917 loadScriptBuild('menu_core'); 1918 }, {once: true}); 1919 1920 if(document.querySelector('.magnifier-favorite')){ 1921 document.querySelector('.magnifier-favorite').addEventListener('click', () => { 1922 loadScriptBuild('menu_core'); 1923 document.getElementById('favoriteContainerHeader')?.scrollIntoView({ behavior: "smooth", block: "start", inline: "start" }); 1924 }, {once: true}); 1925 } 1926 1927 1928 evt.listen('DOMContentLoaded', () => { 1929 evt.listen('breakpoint', () => { 1930 if (['xxxl', 'xxl', 'xl', 'l'].indexOf(window.lcm.breakpoint.getCurrent()) !== -1) { 1931 loadScriptBuild('menu_core'); 1932 } 1933 if (['xxxl'].indexOf(window.lcm.breakpoint.getCurrent()) !== -1) { 1934 window.lcm.panelManager.openOnLoad(); 1935 } 1936 }); 1937 1938 }); 1939 1940}); 1941 1942 1943 evt.listen('DOMContentLoaded', () => { 1944 loadScriptBuild('popin'); 1945}); 1946 1947evt.listen('popinLoaded', () => { 1948 window.lcm.popin.setCloseImg('\u003Csvg\u0020class\u003D\u0022icon\u0020icon\u002DClose\u0020\u0022\u0020aria\u002Dhidden\u003D\u0022true\u0022\u0020\u003E\u003Cuse\u0020xlink\u003Ahref\u003D\u0022\/images\/int\/svg\/icons\u002Dv1.1.33.svg\u0023close\u0022\u0020\/\u003E\u003C\/svg\u003E'); 1949}); evt.listen('DOMContentLoaded', () => { 1950 document.getElementById('cookies-config').addEventListener('click', (e) => { 1951 e.preventDefault(); 1952 e.stopPropagation(); 1953 if (window.lcm.cmp){ 1954 window.lcm.cmp.showConfig(); 1955 } else { 1956 window.location.href = `https\u003A\/\/www.weathercrave.co.uk\/weather\u002Dservices\/info\/cookies` 1957 } 1958 }); 1959}); 1960 const eventClickGeneric = function (evt) { 1961 let url = this.dataset.href; 1962 if (typeof url !== "undefined" && url !== '') { 1963 let target = this.dataset.target || '_self'; 1964 1965 if (this.nodeName === 'A') { 1966 evt.preventDefault(); 1967 } 1968 1969 // Append current page as callback for sign_in (replace existing cb if present) 1970 if (url.includes('/sign-in')) { 1971 const hash = url.indexOf('#'); 1972 const baseUrl = hash > 0 ? url.substring(0, hash) : url; 1973 const anchor = hash > 0 ? url.substring(hash) : ''; 1974 const cbValue = encodeURIComponent(window.location.href); 1975 const cbIndex = baseUrl.indexOf('cb='); 1976 if (cbIndex > -1) { 1977 let ampIndex = baseUrl.indexOf('&', cbIndex + 3); 1978 if (ampIndex === -1) ampIndex = baseUrl.length; 1979 url = baseUrl.substring(0, cbIndex) + 'cb=' + cbValue + baseUrl.substring(ampIndex) + anchor; 1980 } else { 1981 const separator = baseUrl.includes('?') ? '&' : '?'; 1982 url = baseUrl + separator + 'cb=' + cbValue + anchor; 1983 } 1984 } 1985 1986 if (evt.ctrlKey || (navigator.platform.startsWith('Mac') && evt.metaKey) || target === '_blank') { 1987 window.open(url, '_blank'); 1988 } else { 1989 try { 1990 //intertitiel 1991 const fakeLink = document.getElementById('interstitialFakeLink'); 1992 fakeLink.href = url; 1993 fakeLink.click(); 1994 } catch (e) { 1995 window.location.href = url; 1996 } 1997 } 1998 } 1999}; 2000evt.listen('DOMContentLoaded', () => { 2001 document.querySelectorAll('.a-href').forEach( 2002 (el) => { 2003 el.addEventListener('click', eventClickGeneric); 2004 } 2005 ); 2006}); 2007 </script>
2007 2008 2009 2010
2010<script> 2011 function showCmpConfig() { if(typeof __tcfapi === 'undefined'){ 2012 loadCmpScripts(); 2013 } else { 2014 __tcfapi('show', 2, function() {}, { 2015 jumpAt: 'privacy' 2016 }); 2017 } 2018 } 2019 2020 const timetableStickyV2 = function () { 2021 const header = document.querySelector('#header'); 2022 const forecastHeader = document.querySelector('#forecastHeader'); 2023 const forecastTimetable = document.querySelector('#forecast-timetable'); 2024 2025 let rAFScroll = null; 2026 const onScroll = () => { 2027 if (rAFScroll !== null) return; 2028 rAFScroll = window.requestAnimationFrame(() => { 2029 rAFScroll = null; 2030 if (window.scrollY >= header.clientHeight) { 2031 header.classList.add('logo-only'); 2032 if(forecastHeader){ 2033 forecastHeader.classList.add('is-pinned'); 2034 } 2035 if(forecastTimetable){ 2036 forecastTimetable.classList.add('is-pinned'); 2037 } 2038 } else { 2039 header.classList.remove('logo-only'); 2040 if(forecastHeader){ 2041 forecastHeader.classList.remove('is-pinned'); 2042 } 2043 2044 if(forecastTimetable) { 2045 forecastTimetable.classList.remove('is-pinned'); 2046 } 2047 } 2048 }); 2049 }; 2050 window.addEventListener('scroll', onScroll, {passive: true}); 2051 2052 evt.listen('menu_smallLoaded', () => { 2053 window.lcm.menuSmall.disable(); 2054 }); 2055}; 2056 2057timetableStickyV2(); 2058 </script>
2058 2059
2060<script> 2061 evt.dispatch('mainContentVisible'); 2062</script>
2062 2063
2064<script> 2065 loadScriptBuild('refresh'); 2066evt.listen('refreshLoaded', () => { 2067 window.lcm.refresh 2068 .load(); 2069}); 2070</script>
2070 2071</body> 2072</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.