Android WebView 不加载 jQuery

Posted

技术标签:

【中文标题】Android WebView 不加载 jQuery【英文标题】:Android WebView doesn't load 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 之前,它可以工作... :) 谢谢! 【参考方案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  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);

【讨论】:

以上是关于Android WebView 不加载 jQuery的主要内容,如果未能解决你的问题,请参考以下文章

android中webview 怎么实现网页加载时显示加载进度

WebView 在某些 Android 设备上不加载图像或 css

Android WebView 不加载 jQuery

android webview 加载url有延迟怎么办,有没有比wenview更好的第三方控件

Android WebView 不加载页面而不附加到 xml

android webview不加载片段