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

174
Visualizações
¿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 Respostas
Responde à pergunta

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 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