Android WebView не загружает jQuery - PullRequest
13 голосов
/ 19 июля 2011

Я делаю веб-приложение и использую jQuery.

Я сделал простое приложение для Android с WebView и загружаю свой URL: 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>

Если я захожу на мой домен из браузера, предупреждение отображается нормально.Но если я захожу из моего родного приложения, оно не показывает.Что я могу сделать?

Ответы [ 8 ]

19 голосов
/ 19 июля 2011

Включен ли JavaScript в вашем веб-просмотре ...?

WebView.getSettings().setJavaScriptEnabled(true);
5 голосов
/ 05 октября 2011

Я не эксперт по нативному Android, но мы только что разработали приложение с использованием сайта на основе jQuery в веб-обозрении. Вам нужно установить setJavaScriptEnabled (true) в вашем классе активности, и jQuery прекрасно работает с jsut. Однако ваш пример с предупреждением («Привет»); не будет работать, поскольку веб-просмотры Android не поддерживают оповещения по умолчанию. Это можно включить, немного погуглив ... http://lexandera.com/2009/01/adding-alert-support-to-a-webview/

В качестве альтернативы мы добавили пользовательскую функцию showAlert js для отображения симпатичных пользовательских уведомлений.

4 голосов
/ 21 мая 2012

Старый вопрос, но думал, что я все равно добавлю свои 2cents.

Предупреждения Javascript работают в веб-просмотре, но сначала нужно установить клиент Web Chrome.

webView.setWebChromeClient(new WebChromeClient())
3 голосов
/ 05 августа 2012

Где находится ваш скрипт 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"); }

и попробуйте получить доступ к функции dummy в вашем html, чтобы проверить, включен ли файл .js.

2 голосов
/ 29 июня 2015

Вам могут понадобиться две вещи:

webSettings.setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
0 голосов
/ 19 ноября 2017

Правильная последовательность-

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

По ошибке не путайте последовательность вызовов, как показано ниже

webview.loadUrl ("file: ///android_asset/xxx.html ");webview.getSettings () setJavaScriptEnabled (истина);.

0 голосов
/ 16 января 2013

Попробуйте: создайте основное занятие.

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

   }



      }

Создайте еще один Java-файл с именем 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>

Поместите необходимые изображения в папку ресурсов вашего проекта вместе с вышеуказанным html-файлом.

0 голосов
/ 24 июля 2011

Кажется, проблема в расположении файла jquery.js. Опубликуйте некоторый код о том, как вы настраиваете webView. Это даст нам несколько советов.

Например, посмотрите на это: http://techdroid.kbeanie.com/2010/10/android-webview-javascript-and-css.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...