Android WebView不加载jQuery

时间:2011-07-19 16:31:00

标签: jquery android webview

我正在制作一个webapp,而我正在使用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,则警报显示正常。但是,如果我从我的本机应用程序访问它,它不会显示。我该怎么办?

8 个答案:

答案 0 :(得分:18)

您的网页视图是否已启用JavaScript?

WebView.getSettings().setJavaScriptEnabled(true);

答案 1 :(得分:5)

我不是Android原生的专家,但我们刚刚在webview中使用基于jQuery的网站开发了一个应用程序。你的活动类需要setJavaScriptEnabled(true),jQuery运行jsut很好。然而你的例子有警报('嗨');将无法正常工作,因为默认情况下Android网页浏览不支持警报。它可以通过一点点Google搜索来启用... http://lexandera.com/2009/01/adding-alert-support-to-a-webview/

或者我们添加了一个自定义showAlert js函数来显示漂亮的用户通知。

答案 2 :(得分:4)

老问题,但我还是想加上我的2cents。

Javascript警报在网页浏览中有效,但您必须先设置网络客户端。

webView.setWebChromeClient(new WebChromeClient())

答案 3 :(得分: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中的 dummy 函数,以测试是否包含.js文件。

答案 4 :(得分:2)

您可能需要两件事:

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

答案 5 :(得分:0)

问题似乎是jquery.js文件的位置。发布一些有关如何设置webView的代码。这会给我们一些提示。

举个例子,看看这个: http://techdroid.kbeanie.com/2010/10/android-webview-javascript-and-css.html

答案 6 :(得分: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的

的java文件
    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>

将所需图像与上述html文件一起放在项目的资产文件夹中。

答案 7 :(得分:0)

正确的顺序 -

webview.getSettings()setJavaScriptEnabled(真)。 webview.loadUrl(&#34;文件:///android_asset/xxx.html");

错误地不要让你的调用序列出错,如下所示

webview.loadUrl(&#34;文件:///android_asset/xxx.html");  。webview.getSettings()setJavaScriptEnabled(真);