2011-07-19 20 views
11

Estoy haciendo una aplicación web y estoy usando jQuery.Android WebView no carga jQuery

he hecho una sencilla aplicación para Android con una vista Web en ella, y me carga mi url: www.mydomain.com

En mydomain.com que tengo:

<script src="js/jquery_1.4.2_min.js"></script> 

<script type="text/javascript" charset="utf-8"> 
$(document).ready(function(){ 
alert("Hii!!!!"); 
}); 
</script> 

Si vuelvo a visitar mydomain desde el navegador, la alerta muestra bien. Pero si visito desde mi aplicación nativa, no se muestra. ¿Que puedo hacer?

+0

¿tiene jquery cargado? –

+1

Sí. Está cargado. He editado el código. Funciona bien en el navegador, pero no desde la aplicación. – Klian

+0

¿Qué es una aplicación web? como mobile.midominio.com? – Phil

Respuesta

18

¿Ha activado JavaScript en su opinión web ...?

WebView.getSettings().setJavaScriptEnabled(true); 
+0

sí 'browser = new WebView (this); browser.setWebViewClient (nueva WebViewClient() { ..... setContentView (navegador); \t \t browser.getSettings() setJavaScriptEnabled (true); browser.loadUrl ("http:. // midominio .com ");' – Klian

5

No soy un experto con Android nativo, sino que acabamos de desarrollar una aplicación usando jQuery sitio basado en un WebView. Necesita establecerJavaScriptEnabled (verdadero) en su clase de actividad y jQuery ejecuta jsut fine. Sin embargo, su ejemplo con alerta ('Hola'); no funcionará porque las vistas web de Android no admiten alertas por defecto. Se puede habilitar con un poco de Google ... http://lexandera.com/2009/01/adding-alert-support-to-a-webview/

Alternativamente, hemos agregado una función jan de ShowAlert personalizada para mostrar notificaciones de usuarios bonitos.

3

Una vieja pregunta, pero pensé que agregaría mis 2cents de todos modos.

Las alertas de Javascript funcionan en una vista web, pero primero debe configurar el cliente Web Chrome.

webView.setWebChromeClient(new WebChromeClient()) 
3

¿Dónde se encuentra el script js/jquery_1.4.2_min.js? Si se encuentra en el directorio de activos, entonces usted debe inicializar la web View dándole el directorio de activos como baseUrl:

webView.loadDataWithBaseURL("file:///android_asset/", data, "text/html", "UTF-8", null); 

o

webView.loadUrl("file:///android_asset/file.html"); 

Se podría tratar de crear un archivo .js simples con una función simple como

function dummy(document) { document.write("Hooray it works"); } 

y tratar de acceder a la función ficticia en tu html para probar si se incluye el archivo .js.

0

Pruebe este: Crear una actividad principal.

 import android.app.Activity; 
     import android.os.Bundle; 
     import android.webkit.WebView; 
     import android.webkit.WebViewClient; 

     public class MainActivity extends Activity { 
     private WebView webView; 
     private JavaScriptInterFace javaScriptInterFace; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    webView=(WebView)findViewById(R.id.webView); 
    javaScriptInterFace=new JavaScriptInterFace(this); 
    webView.addJavascriptInterface(javaScriptInterFace, "AndroidFunction"); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.loadUrl("file:///android_asset/test.html"); 
    webView.setWebViewClient(new WebViewClient()); 

    } 



     } 

Cree otro archivo java llamado JavaScriptInterFace

import android.content.Context; 
    import android.util.Log; 
     import android.widget.Toast; 

     public class JavaScriptInterFace { 
Context mContext; 

JavaScriptInterFace(Context c) { 
    mContext = c; 
      } 

public int changeImage(){ 
    Log.e("Got", "it"+2); 
    return 2; 
} 

public void showToast(){ 
    Toast.makeText(mContext, "hi", Toast.LENGTH_SHORT).show(); 
} 

    } 

el creat un archivo html poner éste en la carpeta de recursos del proyecto

 <!DOCTYPE html> 
     <html> 
     <head> 
      <meta charset="UTF-8"> 
     <meta name="viewport" content="width=device-width; user-scalable=0;" /> 
     <title>My HTML</title> 
     </head> 
     <body> 
     <p id="mytext">Hello!</p> 
      <img alt="show" src="ic_left_arrow.png" id="myImage"/> 
      </br> 
      <input type="button" value="Change" onClick="changeImage()" /> 
      <input type="button" value="Show tost" onClick="showToast()" /> 

      <script language="javascript"> 
      function changeImage() { 
       i=AndroidFunction.changeImage(); 
      if(i===2){ 
      document.getElementById('mytext').innerHTML = i; 
      document.getElementById('myImage').src="ic_right_arrow.png"; 
     } 
      } 
      function showToast() { 
       AndroidFunction.showToast(); 
      } 

     </script> 

      </body> 
      </html> 

Poner las imágenes necesarias en la carpeta de recursos de su proyecto a lo largo de con el archivo html anterior.

2

Es posible que tenga dos cosas:

webSettings.setJavaScriptEnabled(true); 
webView.setWebChromeClient(new WebChromeClient()); 
0

específicos de secuencia correcta

webview.getSettings() setJavaScriptEnabled (true);. webview.loadUrl ("file: ///android_asset/xxx.html");

Por error No ponga su secuencia de invocación van mal, como a continuación

webview.loadUrl ("file: ///android_asset/xxx.html"); webview.getSettings(). SetJavaScriptEnabled (true);