UI Tweaks By web crawler 136 installs Rating 5.0 (1) approved

Neopets - Remove Buy Confirm Onclick

Removes the inline confirm onclick from shop buy buttons so it doesn't prompt "Are you sure you wish to buy..."
buy confirm neopets shops
https://www.scriptneo.com/script/neopets-remove-buy-confirm-onclick

Version selector


SHA256
5062828b1a65c9ca3b0e2d0a4bbadca5b2346ba02b727241c808dd333dcbc927
No scan flags on this version.

Source code

// ==UserScript==
// @name         Neopets - Remove Buy Confirm Onclick
// @namespace    https://www.scriptneo.com/
// @version      1.0
// @description  Removes the inline confirm onclick from shop buy buttons so it doesn't prompt "Are you sure you wish to buy..."
// @author       You
// @match        https://www.neopets.com/*
// @grant        none
// @downloadURL  https://www.scriptneo.com/scripts/download.php?id=1
// @updateURL    https://www.scriptneo.com/scripts/download.php?id=1
// ==/UserScript==

(function () {
  "use strict";

  function stripInlineConfirm(el) {
    if (!el || !(el instanceof Element)) return false;

    // Remove inline attribute like: onclick="if (!confirm(...)) { return false; }"
    const attr = el.getAttribute("onclick");
    if (attr && /confirm\s*\(/i.test(attr)) {
      el.removeAttribute("onclick");
    }

    // Also remove property handler if it exists and looks confirm-ish
    // (Some pages set el.onclick = function(){...confirm...})
    try {
      const prop = el.onclick;
      if (typeof prop === "function") {
        const src = Function.prototype.toString.call(prop);
        if (/confirm\s*\(/i.test(src)) {
          el.onclick = null;
        }
      }
    } catch (e) {
      // ignore
    }

    return true;
  }

  function scan() {
    // Buttons / inputs commonly used for "Buy"
    const candidates = document.querySelectorAll(
      'input[type="submit"][onclick], input[type="button"][onclick], button[onclick], a[onclick]'
    );

    candidates.forEach((el) => stripInlineConfirm(el));
  }

  // Initial pass
  scan();

  // Keep it clean if the page swaps content dynamically
  const obs = new MutationObserver(() => scan());
  obs.observe(document.documentElement, { childList: true, subtree: true });
})();