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