Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

178
Vistas
¿Cuál es la mejor forma de inyectar javascript en formato react-native?

¿Existe una forma eficiente de formatear grandes cantidades de cadenas de javascript inyectadas y retener la finalización de tipo + funcionalidad comprobable para react-native-webview?

Para react-native, la biblioteca react-native-webview permite la comunicación a través de un WebView nativo y react-native. Esto requiere la inyección de javascript en formato de cadena para personalizar lo que se comunica y cómo se procesan las interacciones del usuario.

Esta inyección puede volverse desordenada, ilegible o tener pequeños errores que son difíciles de probar cuando se necesita combinar un montón de funcionalidades.

¿Alguien tiene una mejor solución escalable para esto?

Mis requisitos para injectableStrings (que afectan el DOM de Webview)

  1. sintaxis legible
  2. Escriba terminaciones

Los documentos de react-native-webview brindan referencias simplificadas a javascript en formato de cadena que no tienen sintaxis ni terminaciones de tipo.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Enfoque actual y respuesta

  1. Cree un archivo Webview y un archivo de inyección.
  2. Utilice el archivo de inyección para contener todos los tipos y funciones web. Esta funcionalidad está formateada en javascript (no en forma de cadena)
  3. Cree un inicializador que convierta toda la funcionalidad en una versión de cadena de la funcionalidad. El inicializador siempre debe devolver una cadena.

Ejemplo

Navegador.inyectableJavascript.ts

 const registerPressHandler = () => { const imgNodes = document.getElementsByTagName('img') const linkNodes = document.getElementsByTagName('a') // add callbacks etc... } // re-registers events whenever the document re-renders nodes... const createObservers = () => { const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { // handle cases here...and rebind events to new nodes registerPressHandler() }) }) observer.observe(document.body, { childList: true, subtree: true, }) } export const browserInjection = ` ${registerPressHandler.toString()}; // initialize web click handler registerPressHandler() ${createObservers.toString()}; createObservers(); `

Navegador.tsx

 import React from 'react' import Webview from 'react-native-webview' import { browserInjection } from './Browser.injections' const Browser = () => { return <Webview injectedJavascript={browserInjection} /> } export default Browser

Otras ideas:

  • Aproveche un paquete para compilar una versión en cadena de un archivo javascript. (contras: es más potencia de procesamiento y no tan rápido como el primer enfoque) (pros: mucha más compatibilidad con el navegador, pero la mayoría de los polyifills no serán necesarios ya que esto solo está dirigido a vistas web de Android e iOS... podría ser útil para dispositivos más antiguos en especificaciones webview inferiores...)
  • Use un montón de literales de plantilla. (contras: esto puede ensuciarse y es muy similar al uso de cadenas puras. No se completa el tipo)
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda