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.
- Hacer el epub libro en android?
- Cómo agregar crosswalk webview en mi propio módulo de biblioteca de Android?
- Fuente personalizada para la vista web
- Rendimiento del androide Sencha Touch 2
- Android Studio - ¿Cómo cargar contenido HTML5 desde una ruta local usando Webview?
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
- Android WebView: sólo carga HTML, no carga JS o CSS (en algunos dispositivos)
- WebView no cambia de tamaño
- WebViewClient que no llama shouldOverrideUrlLoading
- Problemas con Vimeo Player en Android WebView de la aplicación
- Android webview página recarga después de la captura de imagen y cargar en android 5 +
- Android - WebView no reproduce videos de YouTube
- Método WebView + WebChromeClient onCreateWindow no se llama a target = "_ blank"
- Los subprocesos WebView nunca se detienen (WebViewCoreThread, CookieSyncManager, http )
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"); } }
- ¿Cómo puedo obtener mi dispositivo de ID de registro
- El espacio de trabajo de construcción con la aplicación de Android tarda demasiado