# blockenberg/2.0.14/blocks/scroll-to-top/frontend.js

Blockenberg — 600+ Advanced Gutenberg Blocks &amp; AI Agent for WordPress Block Editor, version 2.0.14. 47 lines.

- Page: https://pluginprobe.com/plugins/blockenberg/2.0.14/code/blocks/scroll-to-top/frontend.js
- Raw: https://pluginprobe.com/plugins/blockenberg/2.0.14/raw/blocks/scroll-to-top/frontend.js
- Modified: 2026-10-11T14:39:22+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/blockenberg/2.0.14/code/blocks/scroll-to-top/frontend.js#L10-L20`.

```javascript
/* Scroll To Top — frontend */
( function () {
  function init() {
    document.querySelectorAll('.bkstt-wrap[data-trigger]').forEach(function(wrap) {
      if (wrap._bksttInit) return;
      wrap._bksttInit = true;

      var btn = wrap.querySelector('.bkstt-btn');
      if (!btn) return;

      var trigger = parseInt(wrap.getAttribute('data-trigger'),10) || 400;
      var smooth = wrap.getAttribute('data-smooth') !== '0';
      var ticking = false;

      function update() {
        var scrollY = window.scrollY || window.pageYOffset;
        if (scrollY > trigger) {
          wrap.classList.add('bkstt-visible');
        } else {
          wrap.classList.remove('bkstt-visible');
        }
        ticking = false;
      }

      window.addEventListener('scroll', function() {
        if (!ticking) {
          requestAnimationFrame(update);
          ticking = true;
        }
      }, {passive:true});

      btn.addEventListener('click', function() {
        window.scrollTo({ top: 0, behavior: smooth ? 'smooth' : 'auto' });
      });

      // Initial check
      update();
    });
  }

  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', init);
  } else {
    init();
  }
}() );

```
