1<!doctype html><html lang="en" data-gallery-cover="" data-hero-poster="" data-gallery-media=""><head> 2 <meta charset="utf-8"> 3 <!-- 4 DEV-1215 · Reserve the chrome's footprint before any JS runs. 5 The wral-header and wral-alerts-bar custom elements ship empty and are 6 upgraded by the deferred core module, so on a slow/cold load first paint 7 happens before upgrade and the page content jumps down. These min-heights 8 hold the space; the components override them via the --wral-* custom 9 properties once they know their real height. 10 Must stay the first rule set in the document head (right after the 11 charset meta) so it is parsed before OneTrust and every other tag. 12 --> 13 <style> 14 wral-header { display: block; min-height: var(--wral-header-height, 44px); } 15 wral-alerts-bar { display: block; min-height: var(--wral-alerts-bar-height, 87px); } 16 @media (min-width: 1024px) { 17 wral-header { min-height: var(--wral-header-height, 108px); } 18 } 19 </style> 20 <!-- OneTrust Cookies Consent Notice start for wral.com --> 21
21<script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="6d068f80-e744-46ab-877e-4847983f3ad4"></script>
21 22
22<script type="text/javascript"> 23 function OptanonWrapper() { } 24 </script>
24 25 <!-- OneTrust Cookies Consent Notice end for wral.com --> 26 <meta name="viewport" content="width=device-width, initial-scale=1"> 27 <link rel="preconnect" href="https://web-components.cdn.wral.com" crossorigin=""> 28 <link rel="modulepreload" href="https://web-components.cdn.wral.com/core/v0.15/components.es.js"> 29 <title>Taste of fall continues with cooler and crisp nights ahead :: WRAL.com</title> 30 <link rel="icon" type="image/png" href="https://www.wral.com/favicon-48x48.png"> 31 32 33 34 35 36 <!-- HTL Ad management --> 37 <link rel="stylesheet" type="text/css" href="https://htlbid.com/v3/wral.com/opscobid.css"> 38
38<script async src="https://htlbid.com/v3/wral.com/opscobid.js"></script>
38 39
39<script>window.opscobid = window.opscobid || {}, opscobid.cmd = opscobid.cmd || [], opscobid.cmd.push(function () { opscobid.setTargeting("is_testing", "no"), opscobid.setTargeting("is_home", "no"), opscobid.setTargeting("category", "story"), opscobid.setTargeting("keywords", "wral-weathercenter,weather-forecast,weather"), opscobid.layout() })</script>
39 40 41 42 <meta name="description" content="Cooler, fall like weather sticks around a bit longer. Thursday should be our final day of drizzle to go along with the cooler weather. 43 44"> 45 <meta name="ad-unit-path" content="wral-v4/weather/forecast-raleigh-durham-fayetteville"> 46 <meta name="robots" content="index,follow,max-image-preview:large"> 47 <link rel="dns-prefetch" href="//images.wral.com"> 48 <link rel="preconnect" href="https://images.wral.com"> 49 50 51 52 53 54 <link rel="canonical" href="https://www.wral.com/weather/forecast-raleigh-durham-fayetteville/"> 55 <link rel="preload" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans+Condensed:wght@400;500;700&family=Roboto:wght@400;500;700&display=swap" as="style"> 56 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans+Condensed:wght@400;500;700&family=Roboto:wght@400;500;700&display=swap"> 57 <!-- 58 web-components-wral · core library. 59 DEV-1215: pinned to v0.15, which carries the CLS fix for the header and 60 alerts bar. Keep this in lockstep with the modulepreload above and the 61 components.es.js loader below. 62 --> 63 <link rel="stylesheet" href="https://web-components.cdn.wral.com/core/v0.15/styles.css" media="print" onload="this.media='all'"> 64 65 <meta property="og:url" content="https://www.wral.com/weather/forecast-raleigh-durham-fayetteville/"> 66 <meta name="twitter:url" content="https://www.wral.com/weather/forecast-raleigh-durham-fayetteville/"> 67 <meta property="og:title" content="Taste of fall continues with cooler and crisp nights ahead"> 68 <meta name="twitter:title" content="Taste of fall continues with cooler and crisp nights ahead"> 69 70 71 <meta property="og:description" content="Cooler, fall like weather sticks around a bit longer. Thursday should be our final day of drizzle to go along with the cooler weather. 72 73"> 74 <meta name="twitter:description" content="Cooler, fall like weather sticks around a bit longer. Thursday should be our final day of drizzle to go along with the cooler weather. 75 76"> 77 78 79 80 <meta property="og:image" content="https://images.wral.com/ca1e4f1f-fe61-41b4-ab5d-942a22d9964c?w=1200&h=630&height=630"> 81 <meta property="og:image:width" content="1200"> 82 <meta property="og:image:height" content="630"> 83 <meta property="og:image:alt" content="Taste of fall continues with cooler and crisp nights ahead"> 84 <meta name="twitter:image" content="https://images.wral.com/ca1e4f1f-fe61-41b4-ab5d-942a22d9964c?w=1200&h=630&height=630"> 85 86 87 88 89 90 <!-- OG Video (only when a hero video is present) --> 91 92 93 <!-- og:video / og:video:secure_url --> 94 <meta property="og:video" content="https://media-hls.wral.com/vodhttporigins3/_definst_/smil:amazons3/api-vod-prod-renditions/f3f8b1c7-b571-54e9-9a31-e2718a9340c1-71843f6719a3/21e3d2ee-ee47-44a0-8c94-a5f85267a4c4/playlist.smil/playlist.m3u8"> 95 <meta property="og:video:secure_url" content="https://media-hls.wral.com/vodhttporigins3/_definst_/smil:amazons3/api-vod-prod-renditions/f3f8b1c7-b571-54e9-9a31-e2718a9340c1-71843f6719a3/21e3d2ee-ee47-44a0-8c94-a5f85267a4c4/playlist.smil/playlist.m3u8"> 96 <meta property="og:video:type" content="application/x-mpegURL"> 97 <meta property="og:video:width" content="1920"> 98 <meta property="og:video:height" content="1080"> 99 100 101 102 103 104 105 106 <meta name="twitter:player" content="https://media-hls.wral.com/vodhttporigins3/_definst_/smil:amazons3/api-vod-prod-renditions/f3f8b1c7-b571-54e9-9a31-e2718a9340c1-71843f6719a3/21e3d2ee-ee47-44a0-8c94-a5f85267a4c4/playlist.smil/playlist.m3u8"> 107 <meta name="twitter:player:width" content="1280"> 108 <meta name="twitter:player:height" content="720"> 109 110 111 112 <meta property="og:type" content="article"> 113 <meta property="og:site_name" content="WRAL.com"> 114 <meta name="twitter:site" content="@wral"> 115 <meta name="twitter:card" content="summary_large_image"> 116 <meta name="twitter:creator" content="@wral"> 117 118
118<script type="module" src="https://cdn.wral.com/@wral/search-results/v0.1.14/define.standalone.js"></script>
118 119 120 121 122 <meta name="keywords" content="WRAL WeatherCenter, weather-forecast, weather"> 123 <meta name="news_keywords" content="WRAL WeatherCenter, weather-forecast, weather"> 124 125 126 <meta property="article:published_time" content="2025-11-11T15:11:22Z"> 127 128 129 <meta property="article:modified_time" content="2026-09-24T01:24:43Z"> 130 131 132 <meta property="article:author" content="WRAL Severe Weather Center"> 133 <meta name="author" content="WRAL Severe Weather Center"> 134 135 136 137 <meta property="article:tag" content="WRAL WeatherCenter"> 138 139 <meta property="article:tag" content="weather-forecast"> 140 141 <meta property="article:tag" content="weather"> 142 143 144 145
145<script async src="https://imasdk.googleapis.com/js/sdkloader/ima3.js"></script>
145 146
146<script defer src="https://video-player.cdn.wral.com/v1.0/wralvideo.js"></script>
146 147
147<script> 148 window.addEventListener('DOMContentLoaded', () => { 149 const players = document.querySelectorAll('video.wral-video'); 150 if (!players.length) { 151 return; 152 } 153 const removeHeroPreviewOverlays = () => { 154 document.querySelectorAll('.hero-preview-overlay').forEach((overlay) => { 155 overlay.remove(); 156 }); 157 }; 158 const adUnitPath = document.querySelector('meta[name="ad-unit-path"]')?.content || ''; 159 const buildAdTagUrl = () => { 160 const adUnitParams = new URLSearchParams(); 161 adUnitParams.set('sz', '576x324'); 162 adUnitParams.set('iu', `/6167/${adUnitPath}`); 163 adUnitParams.set('ciu-szs', (['300x250']).join(',')); 164 adUnitParams.set('impl', 's'); 165 adUnitParams.set('gdfp_req', '1'); 166 adUnitParams.set('env', 'vp'); 167 adUnitParams.set('output', 'xml_vast3'); 168 adUnitParams.set('unviewed_position_start', '1'); 169 adUnitParams.set('correlator', `${Date.now()}`); 170 adUnitParams.set('url', window.location.href); 171 adUnitParams.set('description_url', window.location.href); 172 adUnitParams.set('plcmt', 1); 173 adUnitParams.set('vpmute', 1); 174 return `https://pubads.g.doubleclick.net/gampad/ads?${adUnitParams.toString()}`; 175 }; 176 players.forEach((videoElement) => { 177 videoElement.getAttributeNames().forEach((name) => { 178 // Keep data-title -- the wralvideo player reads it to render 179 // the overlay headline (DEV-1127). Still drop the legacy 180 // data-video-* attributes from the iOS playback fix. 181 if (name.startsWith('data-video-')) { 182 videoElement.removeAttribute(name); 183 } 184 }); 185 const player = wralvideo(videoElement, { adTagUrl: buildAdTagUrl() }); 186 player.one('play', () => { 187 // get all hero-preview-overlay classes and remove them 188 removeHeroPreviewOverlays(); 189 window.dataLayer = window.dataLayer || []; 190 window.dataLayer.push({ 191 event: 'GAEvent', 192 eventAction: 'contentStart', 193 eventCategory: 'video', 194 eventLabel: window.document.title, 195 eventValue: 'HTML Video', 196 id: window.location.href, // current url 197 }); 198 }); 199 }); 200 }); 201 </script>
201 202 203 204 205
205<script type="module" src="https://web-components.cdn.wral.com/weather/icon/v0/component.es.js"></script>
205 206
206<script type="module" async src="https://web-components.cdn.wral.com/core/v0.15/components.es.js"></script>
206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 <!-- JSON-LD Structured Data for an Article --> 222
222<script type="application/ld+json"> 223 {"@context":"https://schema.org","@type":"NewsArticle","isAccessibleForFree":true,"mainEntityOfPage":{"@type":"WebPage","@id":"https://www.wral.com/weather/forecast-raleigh-durham-fayetteville/"},"headline":"Taste of fall continues with cooler and crisp nights ahead","description":"Cooler, fall like weather sticks around a bit longer. Thursday should be our final day of drizzle to go along with the cooler weather.\n\n","image":"https://images.wral.com/ca1e4f1f-fe61-41b4-ab5d-942a22d9964c","datePublished":"2025-11-11T15:11:22+00:00","dateModified":"2026-09-24T01:24:43+00:00","publisher":{"@type":"NewsMediaOrganization","name":"WRAL","url":"https://www.wral.com/","logo":{"@type":"ImageObject","url":"https://images.wral.com/4687bfb9-1153-4ec6-b63e-01c2ae696033?w=1200&h=630","width":1200,"height":630}},"author":{"@type":"Person","name":"WRAL Severe Weather Center"}} 224 </script>
224 225 226 227 228 <!-- JSON-LD for the hero VideoObject --> 229 230 231
231<script type="application/ld+json"> 232 {"@context":"https://schema.org/","@type":"VideoObject","name":"Taste of fall continues with cooler and crisp nights ahead","description":"Cooler, fall like weather sticks around a bit longer. Thursday should be our final day of drizzle to go along with the cooler weather.\n\n","thumbnailUrl":"https://images.wral.com/ca1e4f1f-fe61-41b4-ab5d-942a22d9964c?w=640&height=360","uploadDate":"2025-11-11T15:11:22+00:00","isLiveBroadcast":false,"contentUrl":"https://media-hls.wral.com/vodhttporigins3/_definst_/smil:amazons3/api-vod-prod-renditions/f3f8b1c7-b571-54e9-9a31-e2718a9340c1-71843f6719a3/21e3d2ee-ee47-44a0-8c94-a5f85267a4c4/playlist.smil/playlist.m3u8","embedUrl":"https://media-hls.wral.com/vodhttporigins3/_definst_/smil:amazons3/api-vod-prod-renditions/f3f8b1c7-b571-54e9-9a31-e2718a9340c1-71843f6719a3/21e3d2ee-ee47-44a0-8c94-a5f85267a4c4/playlist.smil/playlist.m3u8"} 233 </script>
233 234 235 236 237
237<script type="application/ld+json"> 238 {"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://wral.com/"},{"@type":"ListItem","position":2,"name":"Weather","item":"https://wral.com/weather"},{"@type":"ListItem","position":3,"name":"Forecast raleigh durham fayetteville","item":"https://wral.com/weather/forecast-raleigh-durham-fayetteville"}]} 239 </script>
239 240 241 242 243
243<script type="text/javascript"> 244 window._taboola = window._taboola || []; 245 _taboola.push({article:'auto'}); 246 !function (e, f, u, i) { 247 if (!document.getElementById(i)){ 248 e.async = 1; 249 e.src = u; 250 e.id = i; 251 f.parentNode.insertBefore(e, f); 252 } 253 }(document.createElement('script'), 254 document.getElementsByTagName('script')[0], 255 '//cdn.taboola.com/libtrc/wral-wralnews/loader.js', 256 'tb_loader_script'); 257 if(window.performance && typeof window.performance.mark == 'function') 258 {window.performance.mark('tbl_ic');} 259 </script>
259 260 261
261<script defer src="//s.ntv.io/serve/load.js"></script>
261 262
262<script defer src="https://ak.sail-horizon.com/spm/spm.v1.min.js"></script>
262 263
263<script>Sailthru.init({ customerId: '1f6454efcec5f1022e7f7daf14bbbeb4' });</script>
263 264 265 266 <style> 267 .timestamp .timestamp-item:not(:first-child)::before { 268 content: "â"; 269 } 270 271 .aspect-16x9 { 272 aspect-ratio: 16 / 9; 273 } 274 275 .article-body-video { 276 margin: 1rem 0; 277 } 278 279 .article-body-video .video-container { 280 position: relative; 281 padding-bottom: calc(100% * 9 / 16); 282 width: 100%; 283 } 284 285 .article-body-video .video-container > * { 286 max-width: 100%; 287 width: 100%; 288 height: 100%; 289 position: absolute; 290 } 291 292 .article-hero img { 293 background-color: var(--color-gray-2); 294 color: var(--color-gray-4); 295 font-family: var(--body-font-family); 296 text-shadow: 1px 1px 1px var(--color-white); 297 display: grid; 298 align-content: center; 299 justify-content: center; 300 } 301 302 figcaption, 303 .article-body .image-tool__caption, 304 .article-body media-caption { 305 color: var(--color-gray-4); 306 border-bottom: 0.0625rem solid var(--color-gray-2); 307 padding-bottom: 0.625rem; 308 font-size: 0.8125rem; 309 display: block; 310 font-family: sans-serif; 311 margin: 1rem 0; 312 } 313 314 /* Rights line under an image. Emitted by plexer's content/image 315 transform for body images, and by the hero figure below. Inline so 316 it reads as part of the caption: "A caption (© WRAL)". */ 317 .image-copyright { 318 white-space: nowrap; 319 } 320 321 .ai-generation-notice { 322 color: var(--color-gray-4); 323 font-style: italic; 324 margin-bottom: 0.5rem; 325 } 326 327 .house-promo { 328 display: flex; 329 width: 300px; 330 min-height: 158px; 331 border-width: .1875rem; 332 --tw-border-opacity: 1; 333 border-color: rgb(231 229 228/var(--tw-border-opacity)); 334 padding: .625rem; 335 border-style: solid; 336 box-sizing: border-box; 337 margin: auto; 338 } 339 340 .house-promo:empty { 341 342 border: none; 343 } 344 345 .font-resize-container { 346 margin-left: 0; 347 display: flex; 348 flex-direction: row; 349 gap: .5rem; 350 margin-right: auto; 351 margin-top: 5px; 352 min-height: 37px; 353 align-items: center; 354 } 355 356 .article-tools-container { 357 display: flex; 358 align-items: anchor-center; 359 } 360 361 .small-font p { 362 font-size: 1.125rem; 363 } 364 365 .medium-font p { 366 font-size: 1.5rem; 367 } 368 369 .large-font p { 370 font-size: 1.75rem; 371 } 372 .more-on-this { 373 margin: 0px auto; 374 padding: 0px 1rem; 375 } 376 377 .more-on-this > h3 { 378 margin: 0px 0px 1rem; 379 } 380 381 .more-on-this > .more-on-this-item { 382 align-content: flex-start; 383 align-items: flex-start; 384 flex-flow: row nowrap; 385 border-bottom: 0.0625rem solid #e7e5e4; 386 padding: 0.625rem 0 0.75rem; 387 } 388 389 .related-collection > .more-on-this-item { 390 padding: 0.625rem 0 0.75rem; 391 } 392 393 .more-on-this-item article-asset { 394 display: block; 395 } 396 397 .opscoad-OOP_Adhesion { 398 display: block; 399 width: 100%; 400 min-height: 50px; 401 } 402 403 @media (min-width: 768px) { 404 .opscoad-OOP_Adhesion { 405 min-height: 90px; 406 } 407 } 408 409 .opscoad-OOP_Adhesion iframe, 410 .opscoad-OOP_Adhesion img { 411 width: 100%; 412 height: 100%; 413 object-fit: contain; 414 } 415 </style> 416 417 <!-- Admiral Measure Script --> 418
418<script type="text/javascript"> 419 !(function(Y, _name) { 420 Y[_name] = Y[_name] || function D() { (D.q = D.q || []).push(arguments) }; 421 Y[_name].v = Y[_name].v || 2; 422 Y[_name].s = "1"; 423 })(window, "admiral"); 424 !(function(Y, D, A, U) { 425 A = Y.createElement(D); 426 Y = Y.getElementsByTagName(D)[0]; 427 A.async = 1; 428 A.src = "https://websitesdude.com/files/l1mg4m_15klgw-prod.js"; 429 (U = 0) && U(A); 430 Y.parentNode.insertBefore(A, Y); 431 })(document, "script"); 432 </script>
432 433
433<script type="text/javascript"> 434 !(function(Y, D, A, U, M) { 435 function s(U, M) { 436 try { 437 s = Y.localStorage; 438 (U = JSON.parse(s.getItem(A)).lgk || []) && 439 (M = Y[D].pubads()) && 440 U.forEach(function(Y) { 441 Y && Y[0] && M.setTargeting(Y[0], Y[1] || ""); 442 }); 443 } catch(N) {} 444 var s; 445 } 446 try { 447 (M = Y[D] = Y[D] || {}).cmd = M.cmd || []; 448 typeof M.pubads === U ? s() : 449 typeof M.cmd.unshift === U ? M.cmd.unshift(s) : M.cmd.push(s); 450 } catch(N) {} 451 })(window, "googletag", "_a10Q1zA" + "wNjNeCQzk0MjBD" + "MMDU9OD4YwN0NFMUMtMQ", "function"); 452 </script>
452 453 </head> 454 455 <body> 456 <svg xmlns="http://www.w3.org/2000/svg" style="position:absolute;width:0;height:0;overflow:hidden" aria-hidden="true"> 457 458 <symbol id="i-text-height" viewBox="0 0 576 512"> 459 <path d="M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z"></path> 460 </symbol> 461 </svg> 462 <wral-header style="position: sticky; top: 0; z-index: 99999;"></wral-header> 463 <wral-alerts-bar id="alerts"></wral-alerts-bar> 464 <main> 465 <article class="content-wrapper article"> 466 <section class="article-header"> 467 <studio-breadcrumbs style="min-height: 25px" metadata="{"path":"/weather/forecast-raleigh-durham-fayetteville/","site":"wral.com"}"> 468 </studio-breadcrumbs> 469 <h1>Taste of fall continues with cooler and crisp nights ahead</h1> 470 471 <div class="article-abstract">Cooler, fall like weather sticks around a bit longer. Thursday should be our final day of drizzle to go along with the cooler weather. 472 473</div> 474 475 <div class="timestamp"> 476 477 <span class="timestamp-item"> 478 Posted 479 <formatted-timestamp iso-date="2025-11-11T15:11:22.872Z"> 480 11/11/2025, 3:11:22 PM 481 </formatted-timestamp> 482 </span> 483 484 485 <span class="timestamp-item"> 486 Updated 487 <formatted-timestamp iso-date="2026-09-24T01:24:43.743Z"> 488 9/24/2026, 1:24:43 AM 489 </formatted-timestamp> 490 </span> 491 492 </div> 493 </section> 494 495 <section class="article-main"> 496 497 <div class="tags"> 498 <ul> 499 <li>Related</li> 500 <!-- DEV-537 · Crawlers need the tag links in the server HTML, and 501 <tag-item> only builds its <a> inside a shadow root after a 502 client-side fetch. When the embedded tag data carries a clean 503 href, render a plain light-DOM anchor instead. That data is a 504 snapshot from when the story was tagged, so a tag can lack an 505 href even though a page exists now; those keep <tag-item> and 506 resolve in the browser as before. An href with a query string 507 is api-tag's /tags/?tag= catchall, not a tag page: component 508 path too. --> 509 510 511 512 <li><tag-item value="wral-weathercenter"> 513 WRAL WeatherCenter 514 </tag-item></li> 515 516 517 518 519 <li><tag-item value="weather-forecast"> 520 weather-forecast 521 </tag-item></li> 522 523 524 525 526 <li><tag-item value="weather"> 527 weather 528 </tag-item></li> 529 530 531 </ul> 532 </div> 533 534 <div class="article-meta"> 535 536 <figure class="article-hero"> 537 538 <div class="video-container"> 539 <!-- 540 DEV-1239 · The rights holder rides the player's own 541 title overlay (wralvideo renders data-title before play 542 and on pause) instead of a second template overlay 543 stacked on top of it. Same shape as images: "A title 544 (© WRAL)", or "© WRAL" alone. NOTE: no // comments 545 inside attribute expressions â attribute newlines are 546 collapsed, so a line comment swallows the expression. 547 --> 548 <video id="hero-video" class="wral-video" controls data-title="WRAL WeatherCenter Forecast" poster="https://images.wral.com/ca1e4f1f-fe61-41b4-ab5d-942a22d9964c?w=1200&h=675&height=675" width="1920" height="1080" style="width: 100%;"> 549 550 <source src="https://media-hls.wral.com/vodhttporigins3/_definst_/smil:amazons3/api-vod-prod-renditions/f3f8b1c7-b571-54e9-9a31-e2718a9340c1-71843f6719a3/21e3d2ee-ee47-44a0-8c94-a5f85267a4c4/playlist.smil/playlist.m3u8" type="application/x-mpegURL"> 551 552 553 </video> 554 555 <!-- 556 DEV-1239 · The hero video's copyright renders in the
557 player's own data-title overlay (see the <video> tag 558 above); this template overlay is for the editorial 559 caption only, so the two never stack. 560 --> 561 562 </div> 563 <style> 564 .article-hero .video-container { 565 position: relative; 566 padding-bottom: calc(100% * 9 / 16); 567 width: 100%; 568 position: relative; 569 } 570 571 .article-hero .video-container>* { 572 max-width: 100%; 573 width: 100%; 574 height: 100%; 575 position: absolute; 576 } 577 578 .article-hero .caption-overlay { 579 position: absolute; 580 bottom: 0%; 581 background-color: rgba(0, 0, 0, 0.75); 582 display: flex; 583 color: var(--color-white); 584 justify-content: space-around; 585 align-items: center; 586 zindex: 9996; 587 width: 100%; 588 height: 20%; 589 font-size: 1.125rem; 590 } 591 592 .article-hero .live-overlay { 593 position: absolute; 594 bottom: 2%; 595 left: 1%; 596 background-color: var(--color-red); 597 display: flex; 598 color: var(--color-white); 599 justify-content: space-around; 600 display: flex; 601 align-items: center; 602 z-index: 9997; 603 width: 90px; 604 height: 18px; 605 padding: 6px; 606 font-size: 12px; 607 text-transform: uppercase; 608 } 609 </style> 610 611 612 613 614 615 </figure> 616 617 618 619 <div class="article-byline"> 620 By WRAL Severe Weather Center 621 </div> 622 623 </div> 624 625 <div class="article-body"> 626 <div class="article-tools-container"> 627 <div id="font-resize" class="font-resize-container"> 628 <button id="small-font-button" aria-label="Small font size" style="border:none;background:0 0"> 629 <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="text-height" class="fa-text-height fa-w-18 svg-inline--fa small-buttom-font-svg" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" style="height:19.13px;width:17px"> 630 <use href="#i-text-height"></use> 631 </svg> 632 </button> 633 <button id="medium-font-button" aria-label="Medium font size" style="border:none;background:0 0"> 634 <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="text-height" class="fa-text-height fa-w-18 svg-inline--fa" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" style="height:27px;width:21px"> 635 <use href="#i-text-height"></use> 636 </svg> 637 </button> 638 <button id="large-font-button" aria-label="Large font size" style="border:none;background:0 0"> 639 <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="text-height" class="fa-text-height fa-w-18 svg-inline--fa" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" style="height:31.5px;width:28px"> 640 <use href="#i-text-height"></use> 641 </svg> 642 </button> 643
643<script> 644 const body = document.getElementsByClassName("article-body")[0], 645 smallFontButton = document.getElementById("small-font-button"), 646 mediumFontButton = document.getElementById("medium-font-button"), 647 largeFontButton = document.getElementById("large-font-button"); 648 649 smallFontButton.addEventListener("click", t => { 650 body.classList.add("small-font"), 651 body.classList.remove("medium-font"), 652 body.classList.remove("large-font") 653 }), 654 mediumFontButton.addEventListener("click", t => { 655 body.classList.remove("small-font"), 656 body.classList.add("medium-font"), 657 body.classList.remove("large-font") 658 }), 659 largeFontButton.addEventListener("click", t => { 660 body.classList.remove("small-font"), 661 body.classList.remove("medium-font"), 662 body.classList.add("large-font") 663 }) 664 </script>
664 665 </div> 666 <wral-bookmark-button baseurl="https://api.wral.com/user-facts/v1/"></wral-bookmark-button> 667 </div> 668 669 670 671 672 673 <p>The fall weather many people have been waiting for is here! Highs stay in the 60s with some spotty showers into Thursday.</p> 674 675 676 677 678 679 680 681 682 683 684 <p> Cold air damming is set up, and it's a pattern that will keep us quite cool through Thursday. </p> 685 686 687 688 <div class="exco-wrapper" style="aspect-ratio: 16/9;"> 689 <p>Other WRAL Top Stories</p> 690 <div class="exco-player" style="width: inherit;" id="d8af3f9c-ad37-4890-8ed5-bb0ce702acdf"></div> 691 </div> 692 693 694 695 696 697 698 699 700 <picture><img src="https://images.wral.com/97a14d28-fef5-48f4-8909-6305c619cd58" alt=""><figcaption><span class="image-copyright">© WRAL</span></figcaption></picture> 701 702 703 704 705 706 707 708 709 710 711 <ul><li><b>Tonight:</b> Light rain and drizzle. Lows in the mid to upper 50s.<ul></ul></li><li><b>Thursday:</b> Cloudy, cool with some drizzle. Breezy. Highs in the low to mid 60s. <ul></ul></li><li><b>Friday: </b>Gradually decreasing clouds. Still breezy. Highs near 70 degrees. 712 713<ul></ul></li></ul> 714 715 716 717 718 719 720 721 722 723 724 <p><a rel="noopener" target="_new" href="https://www.wral.com/download-wral-apps/">Download the WRAL Weather App</a> | <a rel="noopener" target="_new" href="https://www.wral.com/video/live-dualdoppler5000-radar/">Track rain with the DualDoppler5000</a></p> 725 726 727 728 729 730 731 732 733 734 735 <h2>Another gray day with cooler temperatures Thursday</h2> 736 737 738 739 740 741 742 743 744 745 746 <p>The fall feel is with us again Thursday. We could see some light rain or pockets of drizzle the first half of the day. It stays cool with highs in the 60s.</p> 747 748 749 750 751 752 753 754 755 756 757 <picture><img src="https://images.wral.com/7a47949c-b4d8-4bb5-9dae-7b77caae29c4" alt=""><figcaption><span class="image-copyright">© WRAL</span></figcaption></picture> 758 759 760 761 762 <div class="opscoad-Mobile_In_Content" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville"> 763 </div> 764 <div class="opscoad-article_in_read" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville/"></div> 765 766 767 768 769 770 771 772 <p>Morning lows will make it feel like fall in the next several days. Parts of the viewing area could get down into the upper 40s over the weekend. Time to break out the sweaters!</p> 773 774 775 776 777 778 779 780 781 782 783 <picture><img src="https://images.wral.com/8aa904d5-ee7a-4a54-83d8-69cc80db6477" alt=""><figcaption><span class="image-copyright">© WRAL</span></figcaption></picture> 784 785 786 787 788 789 790 791 792 793 794 <picture><img src="https://images.wral.com/92b0b219-b13b-412f-b666-57d47097e2de" alt=""><figcaption><span class="image-copyright">© WRAL</span></figcaption></picture> 795 796 797 798 799 800 801 802 803 804 805 <p>The breeze picked up a bit Wednesday, and it stays breezy for the rest of the work week. A low off the coast and an area of high pressure to the north will funnel in a fairly gusty northeast breeze.</p> 806 807 808 809 810 811 812 813 814 815 816 <picture><img src="https://images.wral.com/4aaf5aec-e56a-463e-9ed6-670d228c1b9a" alt=""><figcaption><span class="image-copyright">© WRAL</span></figcaption></picture> 817 818 819 820 821 822 823 824 825 826 827 <h2>A nor'easter to bring gusty winds this week</h2> 828 829 830 831 832 <div class="opscoad-Mobile_In_Content" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville"> 833 </div> 834 <div class="opscoad-article_in_read" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville/"></div> 835 836 837 838 839 840 841 842 <p>The Outer Banks could have gusts around 45 mph Thursday and Friday. The nor'easter likely has some big impacts in the northeast this weekend.</p> 843 844 845 846 847 848 849 850 851 852 853 <picture><img src="https://images.wral.com/dae94868-b29a-48e0-9dc5-a2fbc69fb14d" alt=""><figcaption><span class="image-copyright">© WRAL</span></figcaption></picture> 854 855 856 857 858 859 860 861 862 863 864 <p><a href="https://www.wral.com/video/wral-news-plus/20364185/" target="_blank">Get the latest forecast on WRAL News+</a><b> </b>and <a href="https://www.wral.com/download-wral-apps/5787234/" target="_blank">download the WRAL Weather app</a><b> </b>to get notifications when conditions change.  </p> 865 866 867 868 869 870 <div id="nativo-0001"></div> 871 <div id="nativo-0002"></div> 872 <div id="nativo-0003"></div> 873 874 875 876 877 878 879 <h2>Severe drought creeps back in</h2> 880 881 882 883 884 885 886 887 888 889 890 <p>The latest drought report released on Sept. 17 showed worsening conditions, with Wake County being added back into the severe drought c
890ategory. </p> 891 892 893 894 895 896 897 898 899 900 901 <p>We've gotten some rain, but it's not been enough.</p> 902 903 904 905 906 <div class="opscoad-Mobile_In_Content" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville"> 907 </div> 908 <div class="opscoad-article_in_read" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville/"></div> 909 910 911 912 913 914 915 916 <p>Reservoir levels could also contribute to the change in Wake and lack of change in our northern spots, despite even some better totals there over the weekend. Kerr Lake is still over 10 feet below full pool, and Falls Lake is about 4.5 feet below full pool.</p> 917 918 919 920 921 922 923 924 925 926 927 <picture><img src="https://images.wral.com/31d737a6-74a1-41a4-ade5-23d41db6b6ee" alt=""><figcaption><span class="image-copyright">© WRAL</span></figcaption></picture> 928 929 930 931 932 933 934 935 936 937 938 <h2>What's active in the tropics?</h2> 939 940 941 942 943 944 945 946 947 948 949 <p>Fay is a tropical depression once again. There is a medium chance of development off the coast of Africa. </p> 950 951 952 953 954 955 956 957 958 959 960 <picture><img src="https://images.wral.com/c4fb9956-e436-468c-97da-9dc5ab7eedd6" alt=""><figcaption><span class="image-copyright">© WRAL</span></figcaption></picture> 961 962 963 964 965 966 967 968 969 970 971 <p>In the Pacific, Polo is a major hurricane south of Manzanillo, Mexico. This will stay off the coast of Manzanillo and Acapulco, but could have a more direct impact on Cabo San Lucas later in the week. </p> 972 973 974 975 976 <div class="opscoad-Mobile_In_Content" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville"> 977 </div> 978 <div class="opscoad-article_in_read" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville/"></div> 979 980 981 982 983 984 985 986 <picture><img src="https://images.wral.com/7161b7cb-dbfb-4141-b0f3-b83ed8b4b877" alt=""><figcaption><span class="image-copyright">© WRAL</span></figcaption></picture> 987 988 989 990 991 992 993 994 995 996 997 <p>This could also aid monsoonal moisture in the Southwestern U.S. </p> 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 <h2>El Niño to Super El Niño </h2> 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 <p>Conditions for a Super El Niño have not been reached, yet but we could experience those conditions by the end of the year. For this to occur, sea temperatures must be at least two degrees Celsius above normal for an average of three months. Currently we are at 1.5 just above that number and climbing.  </p> 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 <picture><img src="https://images.wral.com/fdd1ffb8-949f-46f6-b31d-6029947f26c6" alt=""></picture> 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 <h2>7-day forecast for central North Carolina.</h2> 1042 1043 1044 1045 1046 <div class="opscoad-Mobile_In_Content" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville"> 1047 </div> 1048 <div class="opscoad-article_in_read" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville/"></div> 1049 1050 1051 1052 1053 1054 1055 1056 <ul><li><b>Thursday</b>: Light rain or drizzle possible with highs in the upper 60s.<ul></ul></li><li><b>Friday</b>: Partly cloudy with highs in the low 70s.<ul></ul></li><li><b>Saturday</b>: Mostly sunny with highs in the mid 70s.<ul></ul></li><li><b>Sunday:</b> Partly cloudy with highs in the upper 70s.<ul></ul></li><li><b>Monday</b>: Mostly sunny with highs near 80.<ul></ul></li><li><b>Tuesday</b>: Mostly sunny with highs in the low to mid 80s.<ul></ul></li><li><b>Wednesday</b>: Partly cloudy with highs in the mid 80s.<ul></ul></li></ul> 1057 1058 1059 1060 1061 1062 1063 1064 1065 </div> 1066 1067 1068 <div class="article-footer"> 1069 1070 <div class="more-on-this section-wrapper"> 1071 <h3 class="section-title">More on this</h3> 1072 1073 <div class="more-on-this-item"> 1074 <article-asset title="NC experts discuss drought effects as it worsens across the state" href="https://www.wral.com/video/nc-expert
1074s-discuss-drought-effects-as-it-worsens-across-the-state/22351026/" align-thumbnail="right" thumbnail-stack=""> 1075 1076 <picture slot="thumbnail"> 1077 <img class="aspect-16x9" src="https://images.wral.com/asset/weather/2026/04/23/22351028/Drought_Monitor_State_423_1-DMID1-6ar86dvs0-1920x1080.jpg?w=360&h=200&f=webp" alt="Asset Thumbnail" width="360" height="200"> 1078 </picture> 1079 1080 1081 <div slot="excerpt">As drought continues to degrade across the state, a panel of experts curated by NC State will discuss more about this event and its impacts. 1082</div> 1083 </article-asset> 1084 </div> 1085 1086 <div class="more-on-this-item"> 1087 <article-asset title="Ask the Meteorologist: What goes into the creation of the drought monitor?" href="https://www.wral.com/weather/ask-the-meteorologist-creating-drought-monitor-april-2026/" align-thumbnail="right" thumbnail-stack=""> 1088 1089 <picture slot="thumbnail"> 1090 <img class="aspect-16x9" src="https://images.wral.com/c1e936d0-1d88-4e7a-9ac8-8128716e6721?w=360&h=200&f=webp" alt="Asset Thumbnail" width="360" height="200"> 1091 </picture> 1092 1093 1094 <div slot="excerpt">When we think about the worsening drought across our area, we typically think about the fact that we have not had much rain. It's not just precipitation, though, that determines if we are in a drought. Let's dive into how the drought monitor is created.</div> 1095 </article-asset> 1096 </div> 1097 1098 <div class="more-on-this-item"> 1099 <article-asset title="Ask the Meteorologist: What would it take to end ongoing drought?" href="https://www.wral.com/video/ask-the-meteorologist-what-would-it-take-to-end-ongoing-drought/22350562/" align-thumbnail="right" thumbnail-stack=""> 1100 1101 <picture slot="thumbnail"> 1102 <img class="aspect-16x9" src="https://images.wral.com/asset/weather/2026/04/22/22350563/ericmillerdrought-DMID1-6aqrzr53v-950x713.jpg?w=360&h=200&f=webp" alt="Asset Thumbnail" width="360" height="200"> 1103 </picture> 1104 1105 1106 <div slot="excerpt">At this point, it would either take a tropical system or something called an "upper level low" to help us get rid of the drought. 1107</div> 1108 </article-asset> 1109 </div> 1110 1111 </div> 1112 1113 1114 1115 1116 1117 <div class="section-wrapper" id="scroll-wrapper"> 1118 <h3 class="section-title">Related</h3> 1119 <lazy-wrapper id="related-lazy-wrapper" tag="search-list" props="{ 1120 "image-width": "640", 1121 "image-height": "360" 1122 }" data-related-primary="{"paginate":false,"limit":3,"query":"tags.name: \"drought\""}" data-related-searches="[]"> 1123 <div slot="placeholder" aria-hidden="true"></div> 1124 </lazy-wrapper> 1125 </div> 1126 1127 1128 1129 1130 1131 <div class="article-copyright"> 1132 © 2026 Copyright Capitol Broadcasting Company 1133 </div> 1134 1135 </div> 1136 1137 1138 <!-- Taboola --> 1139 <div class="section-wrapper"> 1140 <div id="taboola-below-article-thumbnails" style="min-height: 1580px;"></div> 1141 </div> 1142
1142<script type="text/javascript"> 1143 window._taboola = window._taboola || []; 1144 _taboola.push({ 1145 mode: 'alternating-thumbnails-a', 1146 container: 'taboola-below-article-thumbnails', 1147 placement: 'Below Article Thumbnails', 1148 target_type: 'mix' 1149 }); 1150 </script>
1150 1151 1152 </section> 1153 1154 <section class="article-sidebar"> 1155 <div class="sticky-container" style="top: 120px;"> 1156 <div class="sticky"> 1157 <div class="opscoad-Desktop_Right_Rail_1" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville/"></div> 1158 <div id="sidebar-promo" class="house-promo"></div> 1159
1159<script> 1160 !function () { 1161 const promoUrl = 'https://www-promos.wral.com/content/ads/fetch_promos.php?asset_id=4&ad_position=standard_promo_1'; 1162 const getPromos = async () => { 1163 const res = await fetch(promoUrl); 1164 const json = await res.json(); 1165 if (res.ok) { 1166 const housePromo = document.getElementById("sidebar-promo"); 1167 housePromo.innerHTML = json.markup; 1168 const innerLink = housePromo.getElementsByClassName("h-link")[0]; 1169 innerLink.style = "margin: auto; text-decoration: none;" 1170 innerLink.getElementsByClassName("flag-media")[0].style = "display: flex;" 1171 innerLink.querySelector(".flag-media img").style = "margin: auto;" 1172 innerLink.querySelectorAll(".flag-body > *").forEach(elt => { 1173 elt.style = "margin: auto; text-align: center; font-size: 1rem; font-weight: 700; color: black;"; 1174 }) 1175 } else { 1176 throw new Error(text); 1177 } 1178 }; 1179 getPromos(); 1180 }(); 1181 </script>
1181 1182 1183 <div id="bc_recommend"></div> 1184 <div class="opscoad-Desktop_Right_Rail_2" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville/"></div> 1185 </div> 1186 </div> 1187 </section> 1188 </article> 1189 </main> 1190
1190<script> 1191 (() => { 1192 if (typeof window === 'undefined') return; 1193 1194 const lazyWrapperId = 'related-lazy-wrapper'; 1195 let initialized = false; 1196 1197 const normalize = (item) => { 1198 if (!item) return null; 1199 const href = item.uri || item.href || item.url || item.path || ''; 1200 const title = item.title || item.headline || item.name || ''; 1201 const description = item.description || item.summary || item.deck || ''; 1202 const image = 1203 item.image 1204 || item.image_url 1205 || item.primaryImage 1206 || item.teaseImage 1207 || (Array.isArray(item.images) && item.images[0] && (item.images[0].src || item.images[0])) 1208 || ''; 1209 if (!href || !title) return null; 1210 return { href, title, description, image }; 1211 }; 1212 1213 const parseConfigs = (lazyWrapper) => { 1214 let primary = null; 1215 let searches = []; 1216 try { 1217 if (lazyWrapper.dataset.relatedPrimary) { 1218 primary = JSON.parse(lazyWrapper.dataset.relatedPrimary); 1219 } 1220 } catch (err) { 1221 } 1222 try { 1223 if (lazyWrapper.dataset.relatedSearches) { 1224 searches = JSON.parse(lazyWrapper.dataset.relatedSearches); 1225 } 1226 } catch (err) { 1227 } 1228 return { primary, searches }; 1229 }; 1230 1231 const ensureSearchListAttributes = (searchList) => { 1232 if (!searchList.hasAttribute('image-width')) { 1233 searchList.setAttribute('image-width', '640'); 1234 } 1235 if (!searchList.hasAttribute('image-height')) { 1236 searchList.setAttribute('image-height', '360'); 1237 } 1238 }; 1239 1240 const initSearchList = (lazyWrapper, searchList) => { 1241 if (!searchList || initialized) return; 1242 initialized = true; 1243 1244 const { primary, searches } = parseConfigs(lazyWrapper); 1245 1246 const searchConfig = (primary && primary.query) 1247 ? primary 1248 : (Array.isArray(searches) ? searches.find(search => search?.query) : null); 1249 if (!searchConfig) { 1250 return; 1251 } 1252 1253 ensureSearchListAttributes(searchList); 1254 1255 const apiBase = 'https://api.wral.com/related/v1/recommendations/search'; 1256 const limit = Number.isFinite(+searchConfig.limit) ? +searchConfig.limit : 3; 1257 const paginate = searchConfig.paginate === true; 1258 const baseParams = { 1259 query: searchConfig.query, 1260 limit, 1261 lang: searchConfig.lang || 'en', 1262 sort: searchConfig.sort || 'updated', 1263 paginate, 1264 }; 1265 1266 const sentinel = document.createElement('div'); 1267 sentinel.setAttribute('aria-hidden', 'true'); 1268 sentinel.style.cssText = 'height: 1px; width: 100%;'; 1269 searchList.after(sentinel); 1270 1271 let accumulated = []; 1272 let nextToken = null; 1273 let loading = false; 1274 let reachedEnd = false; 1275 1276 const loadPage = async (token = null) => { 1277 if (loading || reachedEnd) return; 1278 loading = true; 1279 searchList.loading = true; 1280 1281 const params = new URLSearchParams(); 1282 params.set('query', baseParams.query); 1283 params.set('limit', `${baseParams.limit}`); 1284 params.set('lang', baseParams.lang); 1285 params.set('sort', baseParams.sort); 1286 if (baseParams.paginate) params.set('paginate', 'true'); 1287 if (token) params.set('next', token); 1288 const url = `${apiBase}?${params.toString()}`; 1289 1290 try { 1291 const res = await fetch(url); 1292 if (!res.ok) throw new Error(`status ${res.status}`); 1293 const data = await res.json(); 1294 const pageItems = Array.isArray(data.items) 1295 ? data.items 1296 : (Array.isArray(data.results) ? data.results : []); 1297 const currentUrl = window.location.href.replace(/\/$/, ''); 1298 const normalized = pageItems.map(normalize).filter(Boolean) 1299 .filter(item => item.href.replace(/\/$/, '') !== currentUrl); 1300 accumulated.push(...normalized); 1301 searchList.items = accumulated.slice(); 1302 nextToken = data.next || null; 1303 reachedEnd = !nextToken; 1304 searchList.error = ''; 1305 } catch (err) { 1306 searchList.error = 'Unable to load results.'; 1307 reachedEnd = true; 1308 } finally { 1309 loading = false;
1310 searchList.loading = false; 1311 if (!baseParams.paginate || reachedEnd) { 1312 observer?.disconnect(); 1313 } 1314 } 1315 }; 1316 1317 const observer = baseParams.paginate 1318 ? new IntersectionObserver((entries) => { 1319 entries.forEach(entry => { 1320 if (entry.isIntersecting && !reachedEnd && !loading) { 1321 loadPage(nextToken); 1322 } 1323 }); 1324 }, { 1325 // Use viewport as the root; shadow DOM + external roots can miss intersections. 1326 root: null, 1327 rootMargin: '200px 0px', 1328 }) 1329 : null; 1330 1331 if (observer) { 1332 observer.observe(sentinel); 1333 } 1334 1335 loadPage(); 1336 }; 1337 1338 const observeSearchList = (lazyWrapper, shadowRoot) => { 1339 const existing = shadowRoot.querySelector('search-list'); 1340 if (existing) { 1341 initSearchList(lazyWrapper, existing); 1342 return; 1343 } 1344 const mo = new MutationObserver(() => { 1345 const next = shadowRoot.querySelector('search-list'); 1346 if (next) { 1347 mo.disconnect(); 1348 initSearchList(lazyWrapper, next); 1349 } 1350 }); 1351 mo.observe(shadowRoot, { childList: true, subtree: true }); 1352 }; 1353 1354 const waitForShadowRoot = (lazyWrapper, timeoutMs = 8000) => new Promise((resolve) => { 1355 const start = performance.now(); 1356 const check = () => { 1357 if (lazyWrapper.shadowRoot) { 1358 resolve(lazyWrapper.shadowRoot); 1359 return; 1360 } 1361 if (performance.now() - start >= timeoutMs) { 1362 resolve(null); 1363 return; 1364 } 1365 requestAnimationFrame(check); 1366 }; 1367 check(); 1368 }); 1369 1370 const attachWhenReady = async (lazyWrapper) => { 1371 if (initialized) return; 1372 const shadowRoot = await waitForShadowRoot(lazyWrapper); 1373 if (initialized) return; 1374 if (shadowRoot) { 1375 observeSearchList(lazyWrapper, shadowRoot); 1376 } 1377 }; 1378 1379 const bootstrap = () => { 1380 const lazyWrapper = document.getElementById(lazyWrapperId); 1381 if (!lazyWrapper) { 1382 return; 1383 } 1384 1385 if (customElements.get('lazy-wrapper')) { 1386 attachWhenReady(lazyWrapper); 1387 } else { 1388 customElements.whenDefined('lazy-wrapper') 1389 .then(() => attachWhenReady(lazyWrapper)); 1390 } 1391 }; 1392 1393 if (document.readyState === 'complete' || document.readyState === 'interactive') { 1394 bootstrap(); 1395 } else { 1396 document.addEventListener('DOMContentLoaded', bootstrap, { once: true }); 1397 } 1398 })(); 1399 </script>
1399 1400 1401 <!-- DEV-1087: bottom footer Desktop Leaderboard removed (improves footer viewability) --> 1402 1403 <div class="opscoad-OOP_Leaderboard" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville/"></div> 1404 <div class="opscoad-OOP_Pushdown" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville/"></div> 1405 1406 <div class="opscoad-OOP_Adhesion" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville/"></div> 1407 1408 1409
1409<script async src="https://www.googletagmanager.com/gtm.js?id=GTM-TV2CD7D" onload="window.dataLayer = window.dataLayer || []; window.dataLayer.push({ 'gtm.start' : new Date().getTime(), event : 'gtm.js' });"> 1410 </script>
1410 1411 1412
1412<script> 1413 (() => { 1414 if (typeof window === 'undefined') return; 1415 1416 const captionStyleText = ` 1417 figcaption, 1418 .image-tool__caption, 1419 media-caption { 1420 color: var(--color-gray-4); 1421 border-bottom: 0.0625rem solid var(--color-gray-2); 1422 padding-bottom: 0.625rem; 1423 font-size: 0.8125rem; 1424 display: block; 1425 font-family: sans-serif; 1426 margin: 1rem 0; 1427 } 1428 `; 1429 const captionSelectors = [ 1430 '.image-tool__caption', 1431 '.image-caption', 1432 'media-caption', 1433 ].join(','); 1434 1435 const convertToFigcaption = element => { 1436 if (!element || element.tagName?.toLowerCase() === 'figcaption') return; 1437 const figcaption = document.createElement('figcaption'); 1438 for (const { name, value } of Array.from(element.attributes)) { 1439 figcaption.setAttribute(name, value); 1440 } 1441 figcaption.innerHTML = element.innerHTML; 1442 element.replaceWith(figcaption); 1443 }; 1444 1445 const normalizeCaptions = root => { 1446 if (!root || typeof root.querySelectorAll !== 'function') return; 1447 root.querySelectorAll(captionSelectors).forEach(convertToFigcaption); 1448 }; 1449 1450 const ensureShadowCaptionStyles = root => { 1451 if (!root || !('host' in root)) return; 1452 if (root.querySelector('style[data-inline-caption-style]')) return; 1453 const style = document.createElement('style'); 1454 style.setAttribute('data-inline-caption-style', 'true'); 1455 style.textContent = captionStyleText; 1456 root.prepend(style); 1457 }; 1458 1459 const observeCaptions = target => { 1460 if (!target || typeof MutationObserver === 'undefined') return; 1461 const observer = new MutationObserver(() => { 1462 normalizeCaptions(target); 1463 }); 1464 observer.observe(target, { childList: true, subtree: true }); 1465 }; 1466 1467 const init = () => { 1468 document.querySelectorAll('content-block').forEach(block => { 1469 normalizeCaptions(block); 1470 observeCaptions(block); 1471 1472 if (!block.shadowRoot) return; 1473 ensureShadowCaptionStyles(block.shadowRoot); 1474 normalizeCaptions(block.shadowRoot); 1475 observeCaptions(block.shadowRoot); 1476 }); 1477 }; 1478 1479 if (document.readyState === 'loading') { 1480 document.addEventListener('DOMContentLoaded', init, { once: true }); 1481 } else { 1482 init(); 1483 } 1484 })(); 1485 </script>
1485 1486 1487
1487<script> 1488 /** DataLayer Events */ 1489 window.dataLayer = window.dataLayer || []; 1490 window.dataLayer.push({ 1491 'event': 'core-page-view', 1492 'currentPageUrl': window.location.href, 1493 'assetType': 'story', 1494 'template': 'wral-web.story', 1495 'articleTitle': window.document.title, 1496 'articleHeadline': document.querySelector('h1')?.textContent, 1497 'siteVersion': 5, 1498 }); 1499 </script>
1499 1500 1501
1501<script> 1502 (function (d, s, n) { 1503 var js, fjs = d.getElementsByTagName(s)[0]; 1504 js = d.createElement(s); 1505 js.className = n; 1506 js.src = "//player.ex.co/player/d8af3f9c-ad37-4890-8ed5-bb0ce702acdf"; 1507 fjs.parentNode.insertBefore(js, fjs); 1508 }(document, 'script', 'exco-player')); 1509 </script>
1509 1510 1511
1511<script id="chartbeat"> 1512 (function () { 1513 setTimeout(function () { 1514 var _sf_async_config = window._sf_async_config = (window._sf_async_config || {}); 1515 _sf_async_config.uid = 20531; 1516 _sf_async_config.domain = 'wral.com'; 1517 _sf_async_config.useCanonical = true; 1518 _sf_async_config.useCanonicalDomain = true; 1519 _sf_async_config.flickerControl = false; 1520 function loadChartbeat() { 1521 var e = document.createElement('script'); 1522 var n = document.getElementsByTagName('script')[0]; 1523 e.type = 'text/javascript'; 1524 e.async = true; 1525 e.src = '//static.chartbeat.com/js/chartbeat.js'; 1526 n.parentNode.insertBefore(e, n); 1527 } 1528 loadChartbeat(); 1529 }, 100); 1530 })(); 1531 </script>
1531 1532
1532<script async id="chartbeat_mab" src="//static.chartbeat.com/js/chartbeat_mab.js"></script>
1532 1533 1534 <wral-footer></wral-footer> 1535 <my-wral-benefits-modal></my-wral-benefits-modal> 1536
1536<script type="text/javascript"> 1537 window._taboola = window._taboola || []; 1538 _taboola.push({flush: true}); 1539 </script>
1539 1540 1541 1542</body></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.