Android WebView: acceso a clases desde un iframe dentro de otro iframe

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

$(".question").length() 

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

Tenemos un requisito para 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, sólo puede acceder a elementos de un iframe.

¿Hay alguna manera de que funcione sin cambiar el código de los javascripts adjuntos a los artículos? No tengo autoridad allí [además podría ser miles de artículos con un montón de javascripts personalizados para actualizar].

Gracias

Así es como he manejado 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 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"); } } 
  • Vista web de Android con GSAP: intenta eliminar la referencia local que no sea JNI,
  • Ocultar elemento HTML en Android WebView?
  • Las imágenes se cargan más rápido en la vista web
  • ERROR / Web Console: Uncaught TypeError: No se puede llamar al método 'getItem' de null en http://m.youtube.com/:844
  • ¿Cómo puedo mostrar símbolos fonéticos (IPA) en Android
  • La aplicación de vista web de Android no permite que el reproductor de video pase a pantalla completa
  • WebKit / WebView toque / onclick resaltado por defecto (Android Ice Cream Sandwich)
  • DownloadListener.onDownloadStart () nunca llamado
  • El video de Android no se reanuda en la vista web
  • Buscando un menú desplegable en la vista web de Android que esté funcionando
  • Android NDK: compilación personalizada de WebView desde el origen
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.