JavaScript Code Snippets
JS
JavaScript observer
const observer = new MutationObserver(() => {
  const isTargetPage = document.querySelector('.classname1');
  const hasAlreadyInitialized = document.querySelector('.classname2');
  if (isTargetPage && !hasAlreadyInitialized) {
    console.log('This is the target page');
  } else {
    console.log('This is not the target page');
  }
});
const bodyElement = document.body;
if (bodyElement) { observer.observe(bodyElement, { childList: true, subtree: true })}Reusable Mutation Observer Function
function waitForElement(selector, callback, options = { subtree: true, childList: true }, timeout = 10000) {
  const observer = new MutationObserver((mutations, obs) => {
    const element = document.querySelector(selector);
    if (element) {
      clearTimeout(timer);
      obs.disconnect();
      callback(element);
    }
  });
  observer.observe(document.body, options);
  const timer = setTimeout(() => {
    observer.disconnect();
    console.warn(`Timeout: Element "${selector}" not found within ${timeout / 1000} seconds.`);
  }, timeout);
}
waitForElement('.class1', (el) => {
  console.log('class1 found:', el);
});
waitForElement('.class2', (el) => {
  console.log('class2 found:', el);
});Trigger when element is visible to viewport
// Select the element you want to observe
const target = document.querySelector('#myElement');
// Create an observer
const observer = new IntersectionObserver((entries, observer) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      console.log('Element is visible in the viewport!');
      // You can stop observing if you only want to trigger once
      observer.unobserve(entry.target);
    }
  });
}, {
  threshold: 0.1 // Trigger when at least 10% of the element is visible
});
// Start observing the target
observer.observe(target);Run the function when user first scroll
function runOnFirstScroll() {
  console.log('User scrolled for the first time!');
}
let hasScrolled = false;
window.addEventListener('scroll', function () {
  if (!hasScrolled) {
    runOnFirstScroll();
    hasScrolled = true;
  }
});Check if the user's device is a mobile device
const isMobile = /iPhone|Android/i.test(navigator.userAgent);
if(isMobile){
  console.log("User is on a mobile device.");
} else {
  console.log("User is on a desktop or non-mobile device.");
}if (window.matchMedia("(max-width: 768px)").matches) {
    console.log("mobile screen size");
}else{
    console.log("desktop screen size");
}Platform (iPhone, iPhone, iPad) Specific
function iOS() {
            return [
                'iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'
                ].includes(navigator.platform)
                // iPad on iOS 13 detection
                || (navigator.userAgent.includes("Mac") && "ontouchend" in document)
        }
        if (iOS()) {
             console.log('iOS Device')
        }