JQuery не работает на WebView - PullRequest
17 голосов
/ 19 июля 2011

Я пытался включить файлы JQuery в ресурсы / сценарии и в Интернете, но диалоговое окно с предупреждением не отображается.Я получил вывод журнала и сделал его output.html, он работает в Windows (так странно!).В чем проблема с WebView?

public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    webView = (WebView) findViewById(R.id.webView);
    final String s = "<html><head>" +
    "<link href=\"css/my.css\" type=\"text/css\" rel=\"stylesheet\" />" +
    "<script src=\"scripts/jquery-1.6.2.min.js\" rel=\"stylesheet\" type=\"text/javascript\"></script>" +
    "<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js\" type=\"text/javascript\"></script>" +
    "<script>" +
    "$(document).ready(function(){ alert('hello'); });" +
    "</script>" +
    "</head><body><div>All I hear is raindrops." +
    "Falling on the rooftop. Oh baby tell me why you have to go. " +
    "Cause this pain I feel you won't go away. And today, " +
    "I'm officially missing you.</div></body></html>";
    webView.getSettings().setJavaScriptEnabled(true);
    Log.d("Something", s);
    webView.loadDataWithBaseURL("file:///android_asset/", s, "text/html", "utf-8", null);
}

Это вывод журнала после добавления расширения ".html".Он работает в Firefox, но не в WebView.: (

<html>
<head>
<link href="css/my.css" type="text/css" rel="stylesheet" />
<script src="scripts/jquery-1.6.2.min.js" rel="stylesheet" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js" type="text/javascript"></script>
<script>$(document).ready(function(){ alert('hello'); });</script>
</head>
<body>
    <div>
    All I hear is raindrops.Falling on the rooftop. Oh baby tell me why you have to go. Cause this pain I feel you won't go away. And today, I'm officially missing you.
    </div>
</body>
</html>

Ответы [ 6 ]

7 голосов
/ 05 декабря 2012
webView.loadDataWithBaseURL("file:///android_asset/", s, "text/html", "utf-8", null);

изменится на

webView.loadDataWithBaseURL(getAssets(), s, "text/html", "utf-8", null);

, чтобы получить файл актива, вам потребуется доступ к пути актива приложения.Приложение является пользователем Android, поэтому путь к нему не может начинаться с каталога «file: //».

2 голосов
/ 04 декабря 2012

Я думаю, некоторые функции javascript, такие как prompt и alert (всплывающие окна системы), должны быть реализованы вашим кодом.Простое руководство ..,

1.Создайте класс Jscalls.java

public class Jscalls {

    Context mContext;
    Jscalls(Context c) {
        mContext = c;
    }

    /** Show a toast from the web page */
    public void alert(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }    
}

2.В вашей программе добавьте , webView.addJavascriptInterface(new Jscalls(this), "Android");

3.На html-страницах , вместо alert("hello") используйте Android.alert("hello")

Надеюсь, это сработает:)

2 голосов
/ 05 августа 2012

Как уже упоминалось в Android WebView не загружает jQuery :

Где находится ваш скрипт scripts / jquery-1.6.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 голосов
/ 28 февраля 2012

setPluginsEnabled в WebView настройках до true.

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

Вам понадобится файл jquery.js в папке assets / scripts, чтобы это работало.

скрипты / JQuery-1.6.2.min.js

Это должно сработать.

1 голос
/ 03 июля 2012

Вы должны указать полный путь для загрузки javascript и css, например

<link href="http://yourdomain.com/css/my.css" type="text/css" rel="stylesheet" />
...