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

526
Vistas
Android WebView: acceda a clases desde un iframe dentro de otro iframe

Tenemos una aplicación ios nativa, que muestra una vista web con una página web HTML y dos iframes. Dentro de esos iframes, mostramos nuestros artículos de archivos HTML ubicados en los recursos de la aplicación. Dentro de los artículos, a menudo hay scripts javascript que operan en ambos artículos al mismo tiempo. Por ejemplo, ponga alguna parte del texto en negrita. Para ello, lista todos los elementos con una determinada clase y modifica su estilo CSS.

 $(".question").length()

devolvería la cantidad de elementos con clase .question en ambos iframes en iOS, donde solo devolvería elementos del iframe actual en Android. Por "actual" me refiero a aquel con el que el usuario interactuó para iniciar el script.

Tenemos el requisito de lanzar también una aplicación para Android. Todo salió bien, hasta que probé un artículo, donde javascript tiene que operar en ambos iframes. Desafortunadamente, solo puede acceder a elementos de un iframe.

¿Hay alguna forma de que funcione sin cambiar el código de los javascript adjuntos a los artículos? No tengo autoridad allí [además de que podría haber miles de artículos con muchos javascript personalizados para actualizar].

Gracias

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Así es como manejé un caso similar

 webview.loadDataWithBaseURL("file:///android_asset/", your_html_as_string_here, "text/html", "utf-8", null); webview.getSettings().setJavaScriptEnabled(true); // enable javascript webview.addJavascriptInterface(new WebViewJavaScriptInterface(getActivity()), "app");

y tiene que crear una clase interna y llamar a la misma función que se menciona en la interfaz de javascript como 'app.function1'

 public class WebViewJavaScriptInterface { private Context context; /* * Need a reference to the context in order to sent a post message l */ public WebViewJavaScriptInterface(Context context) { this.context = context; } /* * This method can be called from Android. @JavascriptInterface * required after SDK version 17. */ @JavascriptInterface public void function1() { ll_translucent.setVisibility(View.VISIBLE); } /* * This method can be called from Android. @JavascriptInterface * required after SDK version 17. */ @JavascriptInterface public void function2() { new CommonActions(getActivity()).showSnackToast(verticalSeekBar, "Purchase Episode to read Further"); } }
about 4 years ago · Santiago Trujillo 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