2A News

CDC Reverses Course, Reposts Defensive Gun Use Data

Reading Time: 3:37 min

The Centers for Disease Control and Prevention (CDC) in Atlanta apparently bowed to pressure from anti-Second Amendment radicals in 2022 when the agency deleted revealing statistics chronicling defensive gun uses…

View post

FFLs Transferring Unregistered Suppressors Pass ATF Inspections

Reading Time: 1:60 min

Federal Firearm Licensees (FFLs) may be excused for being skittish about selling suppressors, even after positive results from two recent cases involving federal registration of these firearm accessories. After all,…

View post

Australia Announces Buyback for ‘Excess’ Firearms

Reading Time: 2:9 min

Does any levelheaded person believe that violent radicals will surrender their weapons for a check? Apparently, some in Australia do, as the government’s latest response to last December’s Bondi Beach…

View post

Brady Blasts DOJ Reforms Restoring Second Amendment Rights

Reading Time: 1:54 min

Brady United is one of a handful of anti-Second Amendment outfits that attack gun rights and lament even the slightest reform to roll back previous constitutional overreaches. They became accustomed…

View post

Ohio 2A Community Awaits State House Vote on Suppressors

Reading Time: 2:5 min

There has doubtlessly been improvement recently in removing restrictions on the availability of hearing-protecting suppressors. The DOJ and ATF sent strong signals that federal registration requirements are a thing of…

View post

Report: Startup Creates Technology to Prevent 3D Printing Gun Parts

Reading Time: 3:28 min

Opponents of 3D-printed firearm parts, beyond the legality of such restrictions, face the real challenge of blocking this capability on privately owned printers without also stopping ordinary, non-weapon applications. New…

View post
<script>
  /*Source: https://github.com/Krzysztof-Antosik/Two-direction-Sticky-Sidebar*/
  
  // Verificar el ancho de pantalla al cargar y redimensionar
  function checkScreenWidth() {
    if (window.innerWidth <= 767) {
      // Si la pantalla es menor o igual a 676px, no ejecutar el código
      return;
    }

    const stickyElement = document.querySelector('.fb-sidebar__aside');
    const startPosition = stickyElement.getBoundingClientRect().top;

    let endScroll = window.innerHeight - stickyElement.offsetHeight - 500;
    let currPos = window.scrollY;
    let screenHeight = window.innerHeight;
    let stickyElementHeight = stickyElement.offsetHeight;
    let topGap = 40;
    let bottomGap = 40;

    setTimeout(() => {
      if (stickyElement.hasAttribute('data-top-gap')) {
        const dataTopGap = stickyElement.getAttribute('data-top-gap');
        topGap = dataTopGap === 'auto' ? startPosition : parseInt(dataTopGap);
      }

      if (stickyElement.hasAttribute('data-bottom-gap')) {
        bottomGap = parseInt(stickyElement.getAttribute('data-bottom-gap'));
      }
    }, 100);

    stickyElement.style.position = 'sticky';
    stickyElement.style.top = `${topGap}px`;
    stickyElement.style.height = 'fit-content';

    function positionStickySidebar() {
      endScroll = window.innerHeight - stickyElement.offsetHeight - bottomGap;
      const stickyElementTop = parseInt(stickyElement.style.top.replace('px', ''));

      if (stickyElementHeight + topGap + bottomGap > screenHeight) {
        if (window.scrollY < currPos) {
          if (stickyElementTop < topGap) {
            stickyElement.style.top = `${stickyElementTop + currPos - window.scrollY}px`;
          } else if (stickyElementTop >= topGap && stickyElementTop !== topGap) {
            stickyElement.style.top = `${topGap}px`;
          }
        } else {
          if (stickyElementTop > endScroll) {
            stickyElement.style.top = `${stickyElementTop + currPos - window.scrollY}px`;
          } else if (stickyElementTop < endScroll && stickyElementTop !== endScroll) {
            stickyElement.style.top = `${endScroll}px`;
          }
        }
      } else {
        stickyElement.style.top = `${topGap}px`;
      }
      currPos = window.scrollY;
    }

    function stickyElementToMe() {
      stickyElement.style.top = `${topGap}px`;
    }

    function updateSticky() {
      screenHeight = window.innerHeight;
      stickyElementHeight = stickyElement.offsetHeight;
      positionStickySidebar();
    }

    setTimeout(() => {
      window.addEventListener('resize', () => {
        currPos = window.scrollY;
        updateSticky();
      });

      document.addEventListener('scroll', updateSticky, {
        capture: true,
        passive: true
      });
    }, 1000);
  }

  // Verificar el ancho de pantalla al cargar y redimensionar
  window.addEventListener('load', checkScreenWidth);
  window.addEventListener('resize', checkScreenWidth);
</script>