Home / Disable / Promote hero image (LCP) priority
Duplicate Snippet

Embed Snippet on Your Site

Promote hero image (LCP) priority

Scott Cassidy
<10
Code Preview
html
<script>
(function(){
  // 1) Try common “hero” selectors (add your own if you need to)
  var selectors = [
    '.background-image-wrapper .background-image img',         // your current layout
    '.wp-block-cover img',                                     // Gutenberg Cover block
    '.wp-block-cover__image-background',                       // alt cover class
    '.hero img', '.page-hero img', '.site-hero img',           // generic hero classes
    'header .hero img',                                        // hero inside header
    '.elementor-section .elementor-background-slideshow img',  // Elementor background
    '.elementor .elementor-widget-image img'                   // Elementor image widget (broad, but ok as fallback)
  ];
  function findHero(){
    for (var i=0;i<selectors.length;i++){
      var el = document.querySelector(selectors[i]);
      if (el) return el;
    }
    // Fallback: first “big” image near the top
    var imgs = document.images || [];
    for (var j=0;j<imgs.length;j++){
      var el = imgs[j];
      var w = el.naturalWidth || parseInt(el.getAttribute('width'),10) || 0;
      var sizes = el.getAttribute('sizes') || '';
      if (w >= 900 || sizes.indexOf('100vw') !== -1) return el;
    }
    return null;
  }
  var img = findHero();
  if (!img) return;
  var href   = img.currentSrc || img.getAttribute('src') || img.getAttribute('data-src') || '';
  var srcset = img.getAttribute('srcset') || img.getAttribute('data-srcset') || '';
  var sizes  = img.getAttribute('sizes')  || img.getAttribute('data-sizes')  || '100vw';
  if (!href) return;
  // Avoid duplicate preloads for the same href
  var exists = document.querySelector('link[rel="preload"][as="image"][href="'+href.replace(/"/g,'\\"')+'"]');
  if (!exists){
    document.write(
      '<link rel="preload" as="image" fetchpriority="high" href="' +
      href.replace(/&/g,'&').replace(/"/g,'&quot;') + '"' +
      (srcset ? ' imagesrcset="' + srcset.replace(/"/g,'&quot;') + '"' : '') +
      (sizes  ? ' imagesizes="'  + sizes.replace(/"/g,'&quot;')  + '"' : '') +
      '>'
    );
  }
  try {
    img.setAttribute('fetchpriority','high');
    img.setAttribute('loading','eager');
  } catch(e){}
})();
</script>

Comments

Add a Comment