2011-07-19 242 views
11

我正在製作一個web應用程序,而我正在使用jQuery。Android WebView無法加載jQuery

我做了與它的WebView一個簡單的Android應用程序,和我加載我的網址:www.mydomain.com

在mydomain.com,我有:

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

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

如果我訪問來自瀏覽器的mydomain,警報顯示正常。但是,如果我從本機應用程序訪問,它不會顯示。我能做什麼?

+0

你有jQuery加載? –

+1

是的。它被加載。我編輯了代碼。它在瀏覽器中正常工作,但不是從應用程序。 – Klian

+0

什麼是網絡應用程序?像mobile.mydomain.com? – Phil

回答

18

您的webview中是否已啓用JavaScript ...?

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

是 'browser = new WebView(this); browser.setWebViewClient(新WebViewClient(){ ..... 的setContentView(瀏覽器); \t \t browser.getSettings()setJavaScriptEnabled(真); browser.loadUrl(「HTTP:// MYDOMAIN .COM「);' – Klian

5

我和Android原生專家,但使用的WebView內基於jQuery的網站上,我們剛剛開發的應用程序。你的activity類需要setJavaScriptEnabled(true),jQuery運行良好。然而你的例子有alert('Hi');將無法工作,因爲Android Web視圖默認不支持警報。它可以啓用一點谷歌搜索... http://lexandera.com/2009/01/adding-alert-support-to-a-webview/

另外,我們添加了一個自定義的showAlert js函數來顯示漂亮的用戶通知。

3

老問題,但我想我會加我的2cents。

Javascript警報可以在webview中工作,但您必須先設置Web chrome客戶端。

webView.setWebChromeClient(new WebChromeClient()) 
3

您的js/jquery_1.4.2_min.js腳本位於何處?如果它位於您的資產目錄,那麼你應該初始化webView的給它的資產目錄中的baseUrl:

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

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

你可以嘗試創建一個簡單的.js文件與文件簡單的功能就像

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

,並嘗試訪問虛擬功能在HTML測試是否包含在.js文件。

0

試試這個:創建一個主要活動。

 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()); 

    } 



     } 

創建一個名爲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(); 
} 

    } 

在創造一個html文件,把這個項目的資源文件夾

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

把所需要的圖像在項目的資源文件夾以及其他Java文件與上面的html文件。

2

您可能需要兩兩件事:

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

正確的序列 -

webview.getSettings()setJavaScriptEnabled(真)。 webview.loadUrl(「file:///android_asset/xxx.html」);

搞錯不要把你的調用順序出問題像下面

webview.loadUrl( 「文件:///android_asset/xxx.html」); webview.getSettings()。setJavaScriptEnabled(true);