【问题标题】:Android WebView doesn't load jQueryAndroid WebView 不加载 jQuery
【发布时间】:2011-10-08 16:52:39
【问题描述】:

我正在制作一个 webapp,我正在使用 jQuery。

我制作了一个简单的 android 应用程序,其中包含一个 WebView,我加载了我的网址: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,警报显示正常。但是如果我从我的本机应用程序访问,它不会显示。我能做什么?

【问题讨论】:

  • 是的。它已加载。我已经编辑了代码。它在浏览器中运行良好,但在应用程序中运行良好。
  • 什么是网络应用程序?喜欢 mobile.mydomain.com?
  • 即使你不使用 jQuery 并且只是做一个普通的 ol' 警报,它是否工作?
  • Neal 我正在尝试一个简单的:&lt;script type="text/javascript" charset="utf-8"&gt; alert("juas"); &lt;/script&gt;,但它不起作用......
  • 我刚刚把 browser.getSettings().setJavaScriptEnabled(true);在 browser.setWebViewClient 之前,它可以工作... :) 谢谢!

标签: jquery android webview


【解决方案1】:

您的网页视图中是否启用了 JavaScript...?

WebView.getSettings().setJavaScriptEnabled(true);

【讨论】:

  • 是的browser = new WebView(this); browser.setWebViewClient(new WebViewClient() { ..... setContentView(browser); browser.getSettings().setJavaScriptEnabled(true); browser.loadUrl("http://mydomain.com");
【解决方案2】:

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

Javascript 警报确实可以在 web 视图中使用,但您必须先设置 Web chrome 客户端。

webView.setWebChromeClient(new WebChromeClient())

【讨论】:

  • 谢谢。这对我来说是最好的答案
【解决方案3】:

我不是 Android 原生专家,但我们刚刚在 web 视图中使用基于 jQuery 的站点开发了一个应用程序。您的活动类中需要 setJavaScriptEnabled(true) 并且 jQuery 运行良好。但是你的例子 alert('Hi');将不起作用,因为默认情况下 Android webviews 不支持警报。它可以通过谷歌搜索来启用...http://lexandera.com/2009/01/adding-alert-support-to-a-webview/

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

【讨论】:

    【解决方案4】:

    您的 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 文件。

    【讨论】:

      【解决方案5】:

      你可能需要两件事:

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

      【讨论】:

        【解决方案6】:

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

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

        【讨论】:

          【解决方案7】:

          试试这个:创建一个主活动。

                 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文件一起放入项目的asset文件夹中。

          【讨论】:

            【解决方案8】:

            正确的顺序-

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

            不要让你的调用顺序出错,如下所示

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

            【讨论】:

              猜你喜欢
              • 2011-08-12
              • 2016-07-18
              • 1970-01-01
              • 2015-06-16
              • 2018-10-18
              • 2017-02-21
              • 1970-01-01
              • 2012-05-12
              • 1970-01-01
              相关资源
              最近更新 更多