Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

200
Visualizações
¿Cómo verificar si stripe.js ha terminado de ejecutarse?

Intentando mejorar mi puntuación en Lighthouse y el rendimiento general de un sitio. Los documentos oficiales sobre la inclusión de la mención de stripe.js (énfasis mío):

Para aprovechar al máximo la funcionalidad antifraude avanzada de Stripe, incluya este script en todas las páginas, no solo en la página de pago . Esto le permite a Stripe detectar comportamientos sospechosos que pueden ser indicativos de fraude cuando los clientes navegan por su sitio web.

Lo cual es comprensible, pero significa que, sin async / defer , el script ralentiza ligeramente la página (en ~190 ms en mis pruebas) en la mayoría de las páginas que apenas la usan.

Y:

También puede cargar defer usando el atributo async o diferido en la etiqueta del script. Tenga en cuenta, sin embargo, que con la carga asíncrona, las llamadas a la API deberán realizarse solo después de que finalice la ejecución del script .

Esto me deja con las siguientes preguntas:

  1. ¿Cómo puedo comprobar si stripe.js ha terminado de ejecutarse?
  2. async o defer ? es decir, es stripe.js completamente independiente (asincrónico) o depende de que el DOM esté completamente construido (aplazado)?
  3. En lugar de verificar si stripe.js terminó de ejecutarse, tal vez debería mover mi propio código de Stripe en línea (para una página de pago) a su propio archivo JS dedicado, cargado como diferido. De esta manera, las cosas se cargarían sin bloqueo y aún se ejecutarían en su orden relativo.
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Si usar un módulo npm no es su caso para la carga asíncrona, puede verificar la función Stripe antes de inicializar Stripe.js. Algo como esto:

 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title></title> <script defer src="https://js.stripe.com/v3/"></script> </head> <body> <script type="text/javascript"> try { console.log("The first attempt to access Stripe: " + Stripe.version); } catch (e) { console.log("Stripe is not ready."); } stripeScriptElement = document.querySelector("script[src^='https://js.stripe.com/v3']"); if (stripeScriptElement) { stripeScriptElement.addEventListener("load", () => { if (Stripe) { console.log("Stripe v." + Stripe.version + " is ready. "); } else { console.error("Failed loading Stripe.js"); } }); } </script> </body> </html>

about 4 years ago · Juan Pablo Isaza Relatório

0

En un entorno React, inicializo de la siguiente manera:

 import { loadStripe } from "@stripe/stripe-js"; export let stripe = null; export let stripe_started = false; export let stripe_running = false; (async () => { try { stripe = await loadStripe("pk_test_****"); stripe_running = true; } catch (err) { stripe_running = false; } finally { stripe_started = true; } })();

cualquier módulo que importe éste tiene acceso a las banderas; el cierre permite que la función se ejecute de forma asíncrona en el nivel superior.

about 4 years ago · Juan Pablo Isaza Relatório

0

¿Cómo puedo comprobar si stripe.js ha terminado de ejecutarse?

Comprobando loadStripe() como la otra respuesta .

asíncrono o diferido? es decir, es stripe.js completamente independiente (asincrónico) o depende de que el DOM esté completamente construido (aplazado)?

Aplazar, ya que a veces stripe.js y su propio js buscarán un elemento para su DOM para montar, y será más seguro ejecutarlo después de que se cargue el DOM completo ingrese la descripción de la imagen aquí

En lugar de verificar si stripe.js terminó de ejecutarse, tal vez debería mover mi propio código de Stripe en línea (para una página de pago) a su propio archivo JS dedicado, cargado como diferido. De esta manera, las cosas se cargarían sin bloqueo y aún se ejecutarían en su orden relativo.

Asegúrese de marcar tanto stripe.js como su propio JS dedicado como "diferido", y coloque stripe.js antes que su JS. Cuando hay varios scripts diferidos, su orden de ejecución se decidirá por el orden de inclusión

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script#attr-defer

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda